Java Day Light Saving (TimeZone / ZoneId) Поддержка будущих дат / лет - PullRequest
1 голос
/ 14 марта 2019

В Java есть две опции, которые поддерживают функцию сохранения дневного света.1. TimeZone 2. ZoneId

Какой класс лучше использовать?ТЛЧ будет отличаться для каждого года.Как классы Java поддерживают эти конфигурации для часового пояса поиска и для каждого года?Какова максимальная дата или год, в течение которого будет работать DST (zoneId.getRules (). IsDaylightSavings (instant))?

1 Ответ

3 голосов
/ 14 марта 2019

java.time.ZoneId

Используйте ZoneId & ZoneRules, часть современных java.time классов.

Избегайте TimeZone, части ужасных устаревших классов даты и времени, которые устарели в результате принятия JSR 310.

tzdata

Информация о часовом поясе определена в tzdata , хранящемся в вашей JVM. Не забудьте обновить, если зона, о которой вы заботитесь, меняется.

Изменение зон

Какова максимальная дата или год, для которого будет работать DST (zoneId.getRules (). IsDaylightSavings (instant))?

Запрашиваемая максимальная дата будущего летнего времени (DST) ошибочна.

Будущие изменения в смещении, используемом людьми определенного региона, такими как переход на летнее время (DST), будут рассчитываться на неопределенное время в будущем в соответствии с известными в настоящее время правилами .

Хитрость в том, что политики во всем мире проявили склонность к пересмотру своих часовых поясов. Это происходит чаще, чем вы думаете. Таким образом, правила, по которым мы можем планировать наше будущее расписание, на самом деле не известны , так как они определены капризными людьми, а не природой.

Вот почему вы не должны записывать будущие встречи на мгновение. Вместо этого используйте неопределенный класс LocalDateTime с отдельно сохраненным ZoneId. При расчете расписания примените ZoneId к LocalDateTime, чтобы получить объект ZonedDateTime, который является конкретным моментом. Об этом уже много раз говорилось о переполнении стека, поэтому ищите больше информации и примеров кода.


О java.time

Фреймворк java.time встроен в Java 8 и более поздние версии. Эти классы вытесняют старые классные устаревшие классы даты и времени, такие как java.util.Date, Calendar и & SimpleDateFormat.

Чтобы узнать больше, см. Oracle Tutorial . И поиск переполнения стека для многих примеров и объяснений. Спецификация JSR 310 .

Проект Joda-Time , теперь в режиме обслуживания , рекомендует перейти на классы java.time .

Вы можете обмениваться java.time объектами напрямую с вашей базой данных. Используйте драйвер JDBC , совместимый с JDBC 4.2 или более поздней версии. Нет необходимости в строках, нет необходимости в java.sql.* классах.

Где получить классы java.time?

Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является полигоном для возможных будущих дополнений к java.time. Здесь вы можете найти несколько полезных классов, таких как Interval, YearWeek, YearQuarter и more .

...