【问题标题】:R: chron - convert julian days to gregorian dateR: chron - 将儒略日转换为公历日期
【发布时间】:2015-06-26 20:20:46
【问题描述】:

我正在使用自起源 (1-1-1) 以来的儒略天数的时间序列数据集。我正在使用 chron 包中的函数 chron 来进行从儒略日到公历日期的转换。然而,为了检查我的结果,除了在 R 中测试我的结果之外,我还决定将它与几个计算两个日期之间天数的网站(例如,http://www.timeanddate.com/date/durationresult.html)进行比较。以下是可重现的代码:

library('chron')
date <- seq(from=729391,to=729756,by=30)
d.year <- 1
d.month <- 1
d.day <- 1
new.date <- chron(date,origin. = c(d.year,d.month,d.day), out.format = 'year-d-m')

当我运行以下代码时,如果转换正确完成,我应该得到所有元素的 0。事实上我得到了 0:

> library('lubridate')
> ymd(as.character(new.date)) - ymd('0001-01-01') - date
Time differences in days
 [1] 0 0 0 0 0 0 0 0 0 0 0 0 0

当与网站进行比较时,我得到了不同的结果。例如对于元素new.date[1](即1998-Jan-03),我使用上面引用的网站来计算0001-01-011998-Jan-03 之间的天数,我得到729,393,而我应该得到729,391。我知道该网站在计算中包含了开始日期,即使仍然存在1 的差异。谢谢你,如果你能对此有所了解。

【问题讨论】:

    标签: r date gregorian-calendar julian-date


    【解决方案1】:

    Gnu EMACS 日历工具给出 729,392 包括在内,相当于相差 792,391;它在计算间隔中的天数时使用公历。它还指出,公历 1 月 1 日与公元 1 年 1 月 3 日朱利安是同一天。因此,如果其他一些网站将 1582 年之前的日期视为儒略日期,它将从公元 1 月 1 日儒略(即公元前 1 年 12 月 30 日)到 1998 年 1 月 3 日,公历,并导致计数为如果间隔的两端都被视为公历,则要多两天。

    顺便说一句,最初的 Gnu EMACS 日历是由 Edward Reingold 完成的;他和 Nachum Dershowitz 撰写了历法计算,由剑桥大学出版社出版。

    【讨论】:

    • 有点像上世纪初的Excel(Windows)版本?
    • Excel (Windows) 问题据说是为了与 Lotus 123 兼容,这是错误的。一些网站选择在 1582 年 10 月 4 日之前使用儒略历,并从 1582 年 10 月 15 日开始使用公历,这是经过深思熟虑的选择;这就是在教皇要求的日期采用公历的地方真正做的事情。
    猜你喜欢
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    相关资源
    最近更新 更多