我想了解R date的工作方式。
在开源R中,在99年12月31日之后的一天,日期的字符版本将翻到01/01/0000。
max.date <- as.numeric(as.Date("9999-12-31", origin = '1970-01-01', format = '%Y-%m-%d'))
max.date
as.Date(max.date + 1, origin = '1970-01-01')
as.numeric(as.Date(max.date + 1, origin = '1970-01-01'))
如果您尝试以字符串形式输入日期为31/12/9999的某一天,则会得到缺失值。
as.Date("10000-01-01", origin = '1970-01-01', format = '%Y-%m-%d')
当您在99年12月31日之后将数字参数增加到as.Date
时,这些年份就像里程表一样翻转,直到达到2 ^ 32 - 1。
我的问题是为什么今年会翻身,有没有办法控制这个?
答案 0 :(得分:1)
日期和时间是非常复杂的事情(一旦你考虑闰年和日,不同的格式风格和时区)。正如您所发现的那样,R日期时间类仅处理0001-01-01
到9999-12-31
的范围。
即使这样,日期也是格里高利,所以你需要注意1752年之前的日期,或者使用其他日历的国家。
ConvCalendar
套餐可以让您转换为其他一些日历系统(一些当前的日历系统,如伊斯兰和中国;一些过时的日历系统,如朱利安和法国革命)。 AFAIK,它们都没有及时伸展到足以处理Warhammer 40k日期。