Коли замислюєтесь про дати та часи - це сьогодні півночі в минулому чи майбутньому?


9

Це завжди головоломка для мене - і я розумію, що це не суворо проблема в програмуванні чи розробці програмного забезпечення, але, здається, це є розумним поширеним у нашій галузі.

Наприклад, якби я встановив термін придатності як 2011-04-08 00:00:00 - і якщо врахувати мій поточний місцевий час 10:45 на 8-му, - я вже минув? Або у мене ще залишається півдня або близько того?

Чи існують універсальні стандарти, до яких кінець дня "належить" опівночі?

Або я повинен взяти лист у британських військових і сказати, що день закінчується о 23:59:59 і починається о 00:00:01 і що немає півночі?


зачекайте, почекайте, де ваше місцезнаходження? яка дата зараз? 08 чи 07?
Суфенді

sry - зрозуміло, що я вже на 8-му (я в Аделаїді,
штат Каліфорнія

1
Ви в основному запитуєте, чи 00:00:00 менше або більше, ніж 10:45:00?
Мартін Йорк

Я взяв би листок. Багато організацій, які займаються розкладом, уникають 00:00:00 (і 12:00:00). Існує також деяка плутанина щодо позначень AM / PM для тих країн, які не використовують цілодобові годинники.
dbasnett

У деяких контекстах 24:00:00використовується для опису півночі наприкінці дня.
CodesInChaos

Відповіді:


17

Я думаю, що в програмуванні (оракул і php, не впевнений, але інші мови) опівночі - початок дня. Наприклад, якщо обрізати (систематизувати), ви отримаєте 2011-04-08 00:00:00, що є нашим минулим.

Отже, коли годинник змінився з 23:59:59 на 00:00:00, дата фактично змінилася з 2011-04-08 на 2011-04-09


2
Так, день перевертається опівночі, а це 00:00:00.
quick_now

Це правильно AFAIK. Одне збентеження може полягати в тому, що у випадковій промові "сьогодні півночі", ймовірно, означає півночі наприкінці сьогоднішнього дня, тому що це швидше, перш ніж люди лягають спати, ніж після того, як вони прокидаються.
Джек В.

3

Додаток до відповіді @Phelios, якщо у вас є час, наприклад 00:00:00, це не обов’язково саме опівночі. Скоріше, це нескінченно велика множина точок у часі, що всі мають максимальну відстань <1 секунди один до одного. Наприклад, всі 00: 00: 00.345, 00: 00: 00.567 та 00: 00: 00.842 чітко лежать на півночі, але їх буде скорочено до "00:00:00" для відображення. Так само 23: 59: 59: 899 лежить на старі дні опівночі. Отже, сама півночі - це нескінченно короткий проміжок часу між днями, які ви ніколи не потрапите на практиці.


Це один раз, коли важливо усунути різницю між теорією та «передбачуваною» практикою : На практиці користувач, який вводить дату / час, ледве потрудився вводити секунди; не кажучи вже про мілісекунди. На практиці пристрій синхронізації, який визначає час події, може не підтримувати мілісекунд. На практиці, навіть якщо пристрій синхронізації підтримує мілісекунди, немає гарантії, що формат зберігання чомусь не округляє / не скорочує частину часу.
Розчарований

1

Це схожа проблема на обчислення різниці між кутами за допомогою кругової геометрії, де, наприклад, 0 градусів і 360 градусів (і 720 градусів тощо) однакові. То яка різниця між 350 градусами і 10 градусами?

Відповідь: залежить від того, в який бік ви хочете її виміряти - це може бути 20 градусів або 340 градусів. Але робити обчислення кутових різниць насправді досить безладно. Калькуляція різниці в часі аналогічно безладна, якщо ви не перетворюєте на внутрішню форму, яка змушує звичайне додавання і віднімання діяти звичайно. Або ви використовуєте сучасну бібліотеку класів, яка магічно приховує все це від вас (і, отже, ніколи не вчить нікого про фактичні деталі).


в обох випадках ви вказали лише один спосіб цілодобово (або коло) як "позитивний"
HorusKol

Правда. Однак, написання коду для того, щоб зробити вирахування та правильно його підходити кожен раз, потрібно трохи подумати.
швидко_віть
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.