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

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

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

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] в начале следующего календарного дня .. ." а также " Но каков будет правильный способ сделать это?

Если бы кто-нибудь мог предоставить некоторую помощь в том, как добавить метаданные в JPEG с помощью EXIF ​​или IPTC или любой другой библиотеки или функции PHP, я был бы очень признателен.

Обновление:

Прежде всего, спасибо за ответ dbers .

Я просмотрел код. Мне удалось заставить его добавить теги по умолчанию в JPG.

Я все еще немного не понимаю, что означают небольшие части кода.

Например, запись данных exif в функции php:

function iptc_make_tag($rec, $data, $value) 
{ 
    $length = strlen($value); 
    $retval = chr(0x1C) . chr($rec) . chr($data);
    ...
}

Я не встречал функциональную переменную, и как $ rec , $ data и $ value упоминаются, если они не были определены. Или они взяты из iptc_make_tag ?

Я повторил $ rec и $ value , но мне не удалось вернуть значение на экран.

if(isset($info['APP13']))

I Я не уверен, что означает APP13, и когда я пытаюсь вывести $ info , я просто получаю следующее, когда выхожу из $ info в таблице.

'2#120' => 'Test image',
'2#116' => 'Copyright 2008-2009, The PHP Group'

13
задан Community 23 May 2017 в 11:54
поделиться