Код: Выделить всё
public ZonedDateTime plusDays(long days)Это работает по местному времени. -строка, добавляющая дни к локальной дате и времени. Затем оно преобразуется обратно в ZonedDateTime с использованием идентификатора зоны для получения смещения.
При обратном преобразовании в ZonedDateTime, если локальная дата и время равны при перекрытии смещение будет сохранено, если это возможно, в противном случае будет использоваться более раннее смещение. Если в промежутке, локальная дата и время будут скорректированы вперед на длину промежутка.
Этот экземпляр является неизменяемым и на него не влияет вызов этого метода.
Параметры:
Код: Выделить всё
daysВозвраты:
a ZonedDateTime на основе этой даты и времени с добавленными днями, не пустое.
Выдает:
Код: Выделить всё
DateTimeExceptionКак я это понимаю: предположим, что у нас есть объект ZonedDateTime, представляющий 4 сентября, 2022, 18:00 по Америке/часовой пояс Нью-Йорка. Таким образом, этот метод сначала преобразует его в LocalDateTime, то есть потеряет информацию о часовом поясе и сохранит только дату 4 сентября 2022 г., 18:00. Он добавит к нему некоторое количество дней, скажем, 7, так что результатом будет 11 сентября 2022 года, 18:00, и теперь он преобразует его обратно в объект ZonedDateTime, предоставив обратно соответствующую информацию. часового пояса.
Однако я не могу понять последнюю часть документации, а именно:
Когда конвертируем обратно в ZonedDateTime, если локальная дата и время
перекрываются, то смещение будет сохранено, если это возможно, в противном случае
будет использоваться более раннее смещение. Если в промежутке, локальная дата и время будут
скорректированы вперед на длину промежутка.
Что они подразумевают под " местная дата-время перекрываются»? «...тогда смещение будет сохранено, если это возможно, в противном случае будет использоваться более раннее смещение». - что это за два разных смещения? "Если в разрыве..." - что это за разрыв?
Подробнее здесь: https://stackoverflow.com/questions/736 ... timeplusda
Мобильная версия