Что такое «смещения» и «пробелы», упомянутые в Javadoc для ZonedDateTime::plusDays?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Что такое «смещения» и «пробелы», упомянутые в Javadoc для ZonedDateTime::plusDays?

Сообщение Anonymous »

Я не могу понять одну конкретную часть документа, предоставленную для метода plusDays() в классе ZonedDateTime. В документе указано:

Код: Выделить всё

public ZonedDateTime plusDays(long days)
Возвращает копию этого ZonedDateTime с указанным количеством добавленных дней.
Это работает по местному времени. -строка, добавляющая дни к локальной дате и времени. Затем оно преобразуется обратно в ZonedDateTime с использованием идентификатора зоны для получения смещения.
При обратном преобразовании в ZonedDateTime, если локальная дата и время равны при перекрытии смещение будет сохранено, если это возможно, в противном случае будет использоваться более раннее смещение. Если в промежутке, локальная дата и время будут скорректированы вперед на длину промежутка.
Этот экземпляр является неизменяемым и на него не влияет вызов этого метода.
Параметры:  — добавляемые дни могут быть отрицательными.
Возвраты:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»