Некоторые предприятия отслеживают события во времени по «окончанию часа». Каждый час дня представлен порядковым номером:
- 1…24 для UTC
- 1…23, 1…24 и 1…25 для часовых поясов с одночасовой регулировкой летнего времени (DST).
Таким образом, первый час дня с полуночи до 01:00 — Hour Ending 01
.
Мне кажется, что это глупый способ отслеживать время. Более разумным было бы использование времени дня в полуоткрытом подходе, [)
, где начало включает в себя, а конец исключает. Так:
2014-12-05T01:00:00.000
отметитHour Ending 01
2014-12-06T00:00:00.000
(полночь) означаетHour Ending 24
.
Действительно, это то, что я хочу хранить в своей базе данных (Postgres), в TIMESTAMP WITH TIME ZONE преобразовано из даты и порядкового номера часа. Итак, мой вопрос:
Учитывая дату и порядковый номер «Окончание часа» (1…23/24/25 для местности с 1-часовым переходом на летнее время), как преобразовать в значение даты и времени?
Я знаком с Joda-Time и java.time. Предлагает ли какой-либо из них способ конвертации? Если нет, то какой алгоритм обрабатывает как преобразование порядкового номера, так и переход на летнее время?
Или мне не бороться с этим, а просто хранить локальную дату в виде строки с суффиксом порядкового номера часа?
Calendar
, установить день, месяц и год, установить его на полночь, а затем добавить нужное количество часов? Это будет работать в начале и в конце летнего времени. - person Dawood ibn Kareem   schedule 06.12.2014withTimeAtStartOfDay
для получения первого момента дня. МетодplusHours
может использовать число окончания часа для получения значения даты и времени. Для преобразования из date+hourEnding в дату-время это должно работать. Пойду другим путем, я не уверен. - person Basil Bourque   schedule 06.12.2014