Учитывая целый час дня, как найти следующий целый час?JAVA

Программисты JAVA общаются здесь
Anonymous
Учитывая целый час дня, как найти следующий целый час?

Сообщение Anonymous »

мне нужно перекончить в течение всего часа интервала определенного дня. Итак, учитывая время за целый час в рассматриваемый день, скажем, 01:00, как мне найти следующий целый час? Следующий целый час обычно составляет 02:00, но из -за летнего времени (DST) и других аномалий это может быть 01:00 или 03:00 или, может быть, даже в другие часы. Instant .
Следующий целый час может быть «Полночь», начало следующего дня, но мне не нужно идти дальше на следующий день.
Легко, вы можете сказать, добавить один час. Но не везде летнее время означает настройку часов ровно на один час, поэтому я могу больше не попасть в целый час. И, по крайней мере, в прошлом произошли изменения часового пояса, которые повернули часы вперед или назад по смешным количествам, например, +0: 09: 40 (датское время 1894). Следующий пример демонстрирует, что это также не всегда дает правильное время. < /P>
ZoneId zoneId = ZoneId.of("Australia/Lord_Howe");
ZonedDateTime zdt = ZonedDateTime.of(2026, 4, 5,
1, 0, 0, 0, zoneId);
System.out.println(zdt);
System.out.println(zdt.plusHours(1));
System.out.println(zdt.plusHours(1).truncatedTo(ChronoUnit.HOURS));
< /code>
output: < /p>
2026-04-05T01:00+11:00[Australia/Lord_Howe]
2026-04-05T01:30+10:30[Australia/Lord_Howe]
2026-04-05T01:00+11:00[Australia/Lord_Howe]
< /code>
Остров лорда Хоу имеет летнее смещение 30 минут. Когда заканчивается летнее время, и время приближается к 02:00, оно отрегулировано до 01:30. Обселение возвращает нас в 01:00, где мы начали. Я могу повторить операцию, но я всегда вернусь с того места, где я начал.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... whole-hour

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