将十进制日期转换为HH:MM

12

我有一个由十进制数字构成的向量,它们表示“十进制天”的一部分。我想使用 R 将其转换为 HH:MM 格式。

例如,数字 0.8541667 对应于 20:30。如何将这些数字转换为 HH:MM 格式?

3个回答

18

使用 chron

chron::times(0.8541667)
#[1] 20:30:00

15

试一下这个:

R> format(as.POSIXct(Sys.Date() + 0.8541667), "%H:%M", tz="UTC")
[1] "20:30"
R> 

我们从一个日期开始——可以是任何日期,所以我们使用今天——并加上您所需的分数天。

然后,我们将Date类型转换为Datetime对象。

最后,我们格式化Datetime对象的小时和分钟部分,确保使用UTC时区。


2
另一种方法是:format(.POSIXct(86400*0.8541667, "UTC"), "%H:%M") - Joshua Ulrich

2
一种使用data.table的选项:
> library(data.table)
> structure(as.integer(0.4305556*60*60*24), class="ITime")
[1] "10:20:00"

我们将日分数转换为从午夜以来的秒数;强制转换为整数;然后应用ITime类。(ITime类使用存储为整数的自午夜以来的秒数。)
其他资源:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接