Java8 Добавление часов в LocalDateTime не работает
Я пробовал, как показано ниже, но в обоих случаях он показывает то же время? Что я делаю неправильно.
LocalDateTime currentTime = LocalDateTime.now(ZoneId.of("UTC"));
Instant instant = currentTime.toInstant(ZoneOffset.UTC);
Date currentDate = Date.from(instant);
System.out.println("Current Date = " + currentDate);
currentTime.plusHours(12);
Instant instant2 = currentTime.toInstant(ZoneOffset.UTC);
Date expiryDate = Date.from(instant2);
System.out.println("After 12 Hours = " + expiryDate);
"Текущая дата" Время отображается так же, как "Через 12 часов"...
Ответы
Ответ 1
Документация LocalDateTime
указывает, что экземпляр LocalDateTime
является неизменяемым, например plusHours
public LocalDateTime plusHours(long hours)
Возвращает копию этого LocalDateTime
с указанным числом добавлено часов.
Этот экземпляр является неизменным и не зависит от этого вызова метода.
Параметры:
hours
- часы, которые нужно добавить, могут быть отрицательными
Возврат:
LocalDateTime, основанный на этом дате-времени с добавленными часами, а не null
Броски:
DateTimeException - если результат превышает поддерживаемый диапазон дат
Итак, вы создаете новый экземпляр LocalDateTime
при выполнении плюс операции, вам необходимо назначить это значение следующим образом:
LocalDateTime nextTime = currentTime.plusHours(12);
Instant instant2 = nextTime.toInstant(ZoneOffset.UTC);
Date expiryDate = Date.from(instant2);
System.out.println("After 12 Hours = " + expiryDate);
Я надеюсь, что это может быть полезно для вас.
Ответ 2
Из пакета java.time
пакета Javadoc (выделено мной):
Определенные здесь классы представляют собой основные понятия даты и времени, включая моменты, длительности, даты, время, временные зоны и периоды. Они основаны на системе календаря ISO, которая является де-факто календарь, следуя правилам рецептора-григорианца. Все классы неизменяемым и потокобезопасным.
Так как каждый класс в пакете java.time
неизменен, вам нужно зафиксировать результат:
LocalDateTime after = currentTime.plusHours(12);
...