从“ 0000年1月1日”开始的序列号:是-1 BC还是+1 CE?

约翰尼斯·绍布-Litb

我在Matlab和Octave中处理日期,“序列号”格式记录为

一个单一的数字,它等于自用ISO日历(指定使用公历)中的0000年1月0日以来的天数。

在八度中,他们记录

返回输入的日期/时间作为序列号,其中0000年1月1日定义为第1天。

阳历不使用零年但是Matlab和Octave指的是零年。这是否意味着像天文学年编号一样,它们指的是公元前-1年

根据八度音程手册,“ 1582年10月15日”之前的日子“最多错了11天”,比整整一年要小得多。因此,我试图解决这种歧义。

沃尔菲

首先,请注意,MATLAB和Octave定义是等效的

[MATLAB] N = "number of days since Jan 0, 0000"[OCTAVE] "Jan 1, 0000 is day 1"

从第一N = 1天开始


“零年级”(您已链接到)Wikipedia页面提供了以下功能:

[...]公元前1年紧随其后的是公元1。但是,天文年份编号(与朱利安公元前1年重合)和ISO 8601:2004(其中与格里高利历时重合)都为零。公元前1年),以及所有佛教和印度教日历。

datetimedocs中所述,MATLAB和Octave似乎已遵循ISO标准

datetime数组代表使用多时ISO日历的时间点

因此,年份零(即datenum1天值)与1BC的第一天重合。根据此答案顶部的定义

"day 1"
= 1/Jan/0000
= datenum(1)
= datetime( 1, 'ConvertFrom', 'datenum' )
= datetime( 0, 0, 1 )

我们可以使用datenum(天数)和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 )

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章