Это всегда загадка для меня - и я понимаю, что это не является строго проблемой в программировании или разработке программного обеспечения, но кажется, что она является достаточно распространенной в нашей области.
Например, если бы я должен был установить дату истечения срока действия как 2011-04-08 00:00:00 - и учитывая, что мое текущее местное время 8:45 уже 8-го числа - я уже истек? Или мне еще полдня осталось?
Существуют ли универсальные стандарты, которым «принадлежит» конец дня?
Или я должен взять лист у британских военных и сказать, что день заканчивается в 23:59:59 и начинается в 00:00:01 и что нет полуночи?
language-agnostic
time
HorusKol
источник
источник
24:00:00
используется для описания полуночи в конце дня.Ответы:
Я думаю, что в программировании (oracle и php, не уверен насчет других языков), полночь - это начало дня. Например, если вы усечете (sysdate), вы получите 2011-04-08 00:00:00, которое является нашим прошлым.
поэтому, когда часы изменились с 23:59:59 на 00:00:00, дата фактически изменилась с 2011-04-08 на 2011-04-09
источник
Приложение к ответу @Phelios, если у вас есть время, например 00:00:00, это не обязательно точно полночь. Скорее, это бесконечно большой набор моментов времени, все из которых имеют максимальное расстояние <1 секунды друг к другу. Например, все 00: 00: 00.345, 00: 00: 00.567 и 00: 00: 00.842 явно лежат на новой дневной стороне полуночи, но будут сокращены до «00:00:00» для целей отображения. Точно так же 23: 59: 59: 899 лежит на старой стороне полуночи. Итак, сама полночь - это бесконечно короткий промежуток времени между днями, которые вы никогда не достигнете на практике.
источник
Эта проблема аналогична вычислению различий между углами с использованием круговой геометрии, где, например, 0 градусов и 360 градусов (и 720 градусов и т. Д.) Одинаковы. Так в чем же разница между 350 градусами и 10 градусами?
Ответ: это зависит от того, какой путь вы хотите измерить - это может быть 20 градусов или 340 градусов. Но делать вычисления для угловых разностей на самом деле довольно грязно. Вычисления разницы во времени также беспорядочные, если только вы не конвертируете во внутреннюю форму, в которой обычное сложение и вычитание работают обычным образом. Или вы используете современную библиотеку классов, которая волшебным образом скрывает все это от вас (и, следовательно, никогда никому не рассказывает о реальных деталях).
источник