Не могли бы вы опубликовать небольшой пример, используя эти ZoneId и ZonedDateTime для получения даты dayLightSaving
Это будет мое удовольствие.
ZoneId zone = ZoneId.of("America/New_York");
ZonedDateTime testTime = ZonedDateTime.of(2019, 3, 9, 0, 0, 0, 0, zone);
boolean dst = zone.getRules().isDaylightSavings(testTime.toInstant());
System.out.println("Is the day in daylight saving " + dst);
Является ли день в летнее время ложным
Как указано в другом ответе, летнее время (DST) началось в прошлое воскресенье, 10 марта, в Северной Америке в этом году.Итак, давайте попробуем с этим днем в 5 утра - тогда мы должны получить true
.
ZonedDateTime testTime = ZonedDateTime.of(2019, 3, 10, 5, 0, 0, 0, zone);
Является ли день в летнее время истинным
zone.getRules()
возвратZoneRules
объект.Такой объект знает все о смещении UTC для часового пояса, а также о летнем времени.Таким образом, мы можем запросить его с Instant
.Мы получаем Instant
из testTime.toInstant()
.
Ссылка: Раздел Часовой пояс и офсетные классы в руководстве по Oracle (включая пример использования ZoneRules
это немного напоминает мое).