Содержание
Сразу следует исправиться, изменять объекты LocalDateTime, LocalDate или LocalTime нельзя. Это еще одно преимущество нового API - объекты даты и времени являются неизменяемыми (immutable), а поэтому - потоко-безопасными. Тем не менее, изменить дату можно. В результате просто будет создан новый объект с интересующими свойствами.
Для изменения даты и времени существуют методы (в классах LocalDateTime, LocalDate и LocalTime), начинающиеся с префикса with. Обратите внимания, что так как объекты даты и времени являются неизменяемыми, то эти методы не изменяют существующий объект, а возвращают новый с нужными значениями:
LocalDateTime withDayOfMonth(int dayOfMonth) | |
LocalDateTime withDayOfYear(int dayOfYear) | |
LocalDateTime withHour(int hour) | |
LocalDateTime withMinute(int minute) | |
LocalDateTime withMonth(int month) | |
LocalDateTime withNano(int nanoOfSecond) | |
LocalDateTime withSecond(int second) | |
LocalDateTime withYear(int year) |
import java.time.LocalDateTime;
import java.time.Month;
public class Main {
public static void main(String[] args) {
LocalDateTime dateTime = LocalDateTime.of(2002, Month.JANUARY, 10, 22, 56, 59, 999_999_000);
System.out.println("1 month later: " + dateTime.plusMonths(1));
System.out.println("same date in February, 2012: " + dateTime
.withMonth(Month.FEBRUARY.getValue())
.withYear(2012));
}
}
// output:
// 1 month later: 2002-02-10T22:56:59.999999
// same date in February, 2012: 2012-02-10T22:56:59.999999
Подобным образом можно изменить значение остальные составляющие даты: минуты, секунды, часы, дни и т.д.
< | Дата и время в Java 8. Операции сложения и вычитания | Дата и время в Java 8. Сравнение даты и времени | > |