如何获取minutes()返回00而不是0?

时间:2018-11-21 05:48:11

标签: r lubridate

我正在研究从R中的dttm对象提取时间数据并以HH:MM对其进行格式化。我已经能够使用

完成此操作
paste(hour(datetime), minute(datetime), sep=':')

有一个例外:当分钟数小于10时,执行此操作时,分钟函数仅返回分钟数,且前导0除外。例如:

library(lubridate)

datetime = ymd_hms('2018-11-18 14:00:00')

minute(datetime)

输出为

> minute(datetime)
[1] 0

我相信可以使用hms或其他软件包/功能,或者通过构建if-then选项,但是我想最大程度地减少依赖和复杂性,并尽可能地遵循lubridate的细节来实现我的目标。

(注意:我意识到在hour()中存在相同的问题,但是我一直使用的都是PM,所以在我看来并不是那么紧迫。)

2 个答案:

答案 0 :(得分:2)

使用format,您可以在指定-之后获得自己的自定义日期格式-

> format(datetime, "%M")
[1] "00"

OR

感谢@Ronak-

> sprintf("%02d", minute(datetime))
[1] "00"

答案 1 :(得分:1)

您为什么要做所有这些额外的工作?只需直接从datetime(POSIXct)对象获取时间即可。

strftime(datetime, "%H:%M")
# [1] "14:00"