将小数日转换为 HH:MM

问题描述 投票:0回答:4

我有一个十进制数字向量,它代表“十进制日”,即一天的分数。我想使用 R 将其转换为 HH:MM 格式。

例如,数字

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

r date datetime time format
4个回答
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
投票

data.table 的一个选项:

> library(data.table)
> structure(as.integer(0.4305556*60*60*24), class="ITime")
[1] "10:20:00"

我们将日分数转换为自午夜以来的秒数;强制为整数;并应用 ITime 类。 (ITime 使用自午夜以来整数存储的秒数。)

其他资源:


0
投票

您可以使用

library(openxlsx)
,它对于导入和导出数据非常强大。它还有其他非常有用的数据预处理功能。

library(openxlsx)

time <- 0.8541667
time1 <- convertToDateTime(time)
time2 <- format(time1, "%H:%M:%S")
© www.soinside.com 2019 - 2024. All rights reserved.