мне нужно перекончить в течение всего часа интервала дня. Итак, учитывая время суток за один час, скажем, 01:00, как мне найти следующий целый час? Следующий целый час обычно будет 02:00, но из -за летнего времени (DST) и других аномалий это может быть снова 01:00 или 03:00 или, может быть, даже в другие часы. < /P>
Легко, вы можете сказать, добавить один час. Но не везде летнее время означает настройку часов ровно на один час, поэтому я могу больше не попасть в целый час. И, по крайней мере, в прошлом произошли изменения часового пояса, которые повернули часы вперед или назад по смешным количествам, например, +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
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение