На протяжении многих лет я сталкивался с различными интерпретациями в конце дня. Но что такое правильный способ от его отображения при сравнении дат и интервалов?Какова правильная интерпретация в конце дня?
Я обнаружил, что некоторые люди предпочитают 23:59:59, а другие используют 00:00:00.
Здесь, на StackOverflow, я даже нашел несколько вопросов, связанных с использованием и отображением 24:00:00, однако сфера охвата этого вопроса более сфокусирована на определении того, как разделить два дня.
Другими словами, нас интересует проблема определения, где заканчивается ровно день, и где начинается следующее. Это, по-видимому, общая проблема во многих приложениях, требующих даже самых простых сравнений или вычислений временных интервалов.
Чтобы уточнить вышеуказанные интерпретации, ниже приведены три примера, представляющие 1 января й 2014 в рамках трех различных интерпретаций:
- Квази полночь:
2014-01-01 00:00:00 - 2014-01-01 23:59:59
- Полночь острые:
2014-01-01 00:00:00 - 2014-01-02 00:00:00
- Военная полуночи:
2014-01-01 00:00:00 - 2014-01-01 24:00:00
В то время как я чувствую, что квази полночи интерпретации является наиболее интуитивными один, он также, кажется, требует изрядного количества шаблонного правильно указать время. Кроме того, существует риск столкнуться с крайними случаями, когда последняя вторая часть дня неправильно обрабатывается, или риск повлиять на производительность при сканировании огромных коллекций интервалов для тестирования вокруг этих пробелов.
Аналогичным образом, интерпретация военной службы также требует некоторого шаблона для настройки двойного представления этой точки деления. Не слишком много думая, я не могу придумать много осложнений, используя этот подход.
Наконец, полуночная резкая интерпретация представляется хорошим кандидатом на наиболее последовательную. В отличие от полуночи квази, не требуется шаблон для установки времени, и он, естественно, ведет себя с операторами <
, <=
, >
и >=
.
Стоит отметить, что язык PHP уже интерпретирует 2014-01-01 24:00:00
, как 2014-01-02 00:00:00
, который имеет эффект преобразования даты полуночных резкий интерпретации.
Есть ли замечательные прецеденты в образцовых библиотеках или стандартах FLOSS, которые бы оправдывали использование одной интерпретации над другой?
Какое определение «правильно» в этом контексте? – Ideasthete
Каково ваше фактическое приложение? Не будет ли это иметь отношение к интерпретации? –
Я верю, что в контексте вопроса подразумевается, что интерпретация по своей сути работает с операторами, она не требует кода шаблона или установки и что он не оставляет места для неопределенности. См. Ответ @ JonathonReinhart для объяснения неопределенного времени или пробелов. –