Joda Time LocalTime 24:00 в конце дня

Мы создаем приложение для планирования, и нам нужно представить чье-то доступное расписание в течение дня, независимо от того, в каком часовом поясе они находятся. cue из Joda Time's Interval, который представляет интервал в абсолютном времени между двумя экземплярами (включая начало, исключение конец), мы создали LocalInterval. LocalInterval состоит из двух LocalTimes (включая начало и исключение конца), и мы даже создали удобный класс для сохранения этого в Hibernate.

Например, если кто-то доступен с 13:00 до 17:00, мы создадим:

new LocalInterval(new LocalTime(13, 0), new LocalTime(17, 0));

Пока все хорошо --- пока кто-то не захочет быть доступен с 23:00 до полуночи в какой-то день. Поскольку конец интервала является исключительным, это должно быть легко представлено как таковое:

new LocalInterval(new LocalTime(23, 0), new LocalTime(24, 0));

Ack! Нет. Это вызывает исключение, потому что LocalTime не может удерживать час больше 23.

Мне это кажется недостатком дизайна - Джода не учел, что кому-то может понадобиться LocalTime, представляющий неинклюзивную конечную точку.

Это действительно расстраивает, поскольку пробивает дыру в созданной нами очень элегантной модели.

Какие у меня есть варианты --- кроме разветвления Джоды и получения чека на 24 часа? (Нет, мне не нравится вариант использования фиктивного значения - скажем, 23:59:59 - для представления 24:00.)

Обновление: для тех, кто постоянно повторяет, что такого нет как 24:00, вот цитата из ISO 8601-2004 4.2.3 Примечания 2, 3:«Конец одного календарного дня [24:00] совпадает с [00:00] в начале следующего календарного дня ...» и «Представления, в которых [чч] имеет значение [24], предпочтительны только для представления конец временного интервала .... "

11
задан Garret Wilson 22 March 2011 в 02:12
поделиться