Время Java: плюс дни по дате/времени UTC меняют часJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Время Java: плюс дни по дате/времени UTC меняют час

Сообщение Anonymous »

Обратите внимание на следующее:

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

import java.time.*;
var today = Instant.now();
var futureDay1 = today.atZone(ZoneId.systemDefault()).plusDays(1428826726);
var futureDay2 = today.atZone(ZoneOffset.UTC).plusDays(1428826726).withZoneSameInstant(ZoneId.systemDefault());
является ZoneId.systemDefault() часовым поясом Европы/Рима.
В итоге остается следующее:

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

futureDay1 ==> +3914019-03-19T16:42:44.377406+01:00[Europe/Rome]
futureDay2 ==> +3914019-03-19T15:42:44.377406+01:00[Europe/Rome]
Итак, FutureDay2 отстает на час. Я не могу объяснить себе, почему. Текущее время (16:00) не подвергается риску перехода на летнее время, так почему же это происходит?
Конечно, этого не происходит при любом добавленном количестве дней.
И это не просто проблема представления: если вы преобразуете оба значения в миллисекунды из Epoch, эти два значения на самом деле будут двумя разными моментами, то есть разными длинными значениями.

Подробнее здесь: https://stackoverflow.com/questions/787 ... s-the-hour
Ответить

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

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

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

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

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