将儒略历日与十进制转换为r中的日期和小时



我必须在R上将带有十进制部分(作为一天的一部分)的儒略历日期转换为日期和小时。

我试过这个函数:as.Date(10625.15, origin=as.Date("1990-01-01 00:00:00"))

但是它只给了我日期而没有时间:"2019-02-02"

有人能帮我解决吗?提前感谢!!

您使用as.Date,它返回了一个日期,这正是它的设计目的(ref:?as.Date说它将返回一个类" date ">的对象)。幸运的是,它返回一个小数日期:

dput(as.Date(10625.15, origin=as.Date("1990-01-01 00:00:00")))
# structure(17930.15, class = "Date")
###              ^^^ yay! we have fraction

所以我们可以用as.POSIXct:

as.POSIXct(as.Date(10625.15, origin=as.Date("1990-01-01 00:00:00")))
# [1] "2019-02-02 22:36:00 EST"

尽管时区。一天的.15是3.6小时,因此在上面转换为UTC时,这将显示03:36:00

有人可能想用as.POSIXct来代替as.Date,但是要知道10625.15是小数天,而不是小数秒(这是as.POSIXct所期望的)。要做到这一点,您需要从"天"转换为"天"。以"seconds"

as.POSIXct(86400*10625.15, origin=as.Date("1990-01-01 00:00:00"))
# [1] "2019-02-02 22:36:00 EST"