Во-первых, обратите внимание, что определения MATLAB и Octave эквивалентны
[MATLAB] N = "number of days since Jan 0, 0000"
⇔ [OCTAVE] "Jan 1, 0000 is day 1"
С N = 1
в день 1.
Страница Википедии «Нулевой год» (на которую вы ссылаетесь) предлагает следующее:
[...] год 1 B C сопровождается нашей эры 1. Однако в нумерации астрономических годов существует нулевой год (где он совпадает с юлианским годом 1 B C) и в ISO 8601: 2004 (где он совпадает с григорианским годом 1 B C) , а также во всех буддийских и индуистских календарях.
Похоже, что MATLAB и Octave следовали стандарту ISO, как указано в datetime
документах :
Массивы даты и времени представляют моменты времени используя prolepti c календарь ISO
Таким образом, нулевой год и, следовательно, значение datenum
, равное 1 дням, совпадает с первым днем 1B C. В соответствии с определениями в верхней части этого ответа
"day 1"
= 1/Jan/0000
= datenum(1)
= datetime( 1, 'ConvertFrom', 'datenum' )
= datetime( 0, 0, 1 )
Мы можем протестировать, используя datenum
(количество дней) и datetime
(объект типа datetime)
datenum( 0, 0, 1 ) % = 1, as defined by the docs
datetime( 1, 'ConvertFrom', 'datenum' )
% = 1/Jan/0000 00:00:00
datetime( 1 + 366, 'ConvertFrom', 'datenum' )
% = 1/Jan/0001 00:00:00
% First day of year 1 after 366 days (leap year 0000 + 1 for Jan 1 )