我正在研究从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,所以在我看来并不是那么紧迫。)
答案 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"