Почему день 0 января — 0-е?

Почему день 0 января — 0-е?

Если я отформатирую столбец с помощью mmm dd hh:mm:ssи задам значение ячейки как 0, оно отобразится как Jan 00 00:00:00.

Похоже, это противоречит Части 1, Разделу L.2.16.9.1Стандарт ECMA-376, которому Excel якобы следует.

Из спецификации:

Дата, которую можно интерпретировать как числовое значение, является серийным значением. Оно состоит из знакового целого компонента даты и беззнакового дробного компонента времени. Двигаясь вперед во времени, компонент даты серийного значения увеличивается на 1 каждый день. Серийное значение представляет дату и время UTC и, как таковое, не имеет информации о часовом поясе. Для преобразования дат в серийные значения можно использовать три различных основания:

  • В системе отсчета дат 1900 года нижний предел составляет 1 января, -9999 00:00:00, что соответствует порядковому номеру -4346018. Верхний предел составляет 31 декабря 9999 года, 23:59:59, что соответствует порядковому номеру 2 958 465,9999884. Базовая дата для этой системы отсчета дат составляет 30 декабря 1899 года, что соответствует порядковому номеру 0.
  • В системе базовых дат обратной совместимости 1900 года нижний предел — 1 января 1900 года, 00:00:00, что имеет порядковое значение 1. Верхний предел — 31 декабря 9999 года, 23:59:59, что имеет порядковое значение 2 958 465,9999884. Базовая дата для этой системы базовых дат — 31 декабря 1899 года, что имеет порядковое значение 0.
  • В системе базовых дат обратной совместимости 1904 года нижний предел — 1 января 1904 года, 00:00:00, что имеет порядковое значение 0. Верхний предел — 31 декабря 9999 года, 23:59:59, что имеет порядковое значение 2 957 003,9999884. Базовая дата для этой системы базовых дат — 1 января 1904 года, что имеет порядковое значение 0.

Из этого я делаю вывод, что 0это должно быть отображено как 30 декабря 1899 г.; 31 декабря 1899 г.; или 1 января 1904 г.; в зависимости от того, какая из вышеперечисленных систем выбрана (Excel предоставляет здесь некоторую настраиваемость). Я что-то упускаю, или у кого-то есть объяснение, почему это отклоняется от спецификации?

У меня версия 16.61.1, если это имеет значение.

решение1

Похоже, это противоречит Части 1, Разделу L.2.16.9.1 стандарта ECMA-376.

В системе дат обратной совместимости 1900 года нижний предел — 1 января 1900 года, 00:00:00, что имеет порядковый номер 1.

Нет, это не противоречит этой части. Нижним пределом является серийное значение 1; серийное значение 0 выходит за пределы, его не следует использовать, и вы не можете ожидать правильного результата, используя его.

Я мог бы найти эту часть вдокументация функции даты:

Excel интерпретирует аргумент года в соответствии с системой дат, используемой вашим компьютером. По умолчанию Microsoft Excel для Windows использует систему дат 1900, что означает, что первая дата — 1 января 1900 года.

Связанный контент