如何让 minute() 变为 Return 00 而不是 0?
How Can I Get minute() to Return 00 instead of 0?
我正在研究从 R 中的 dttm 对象中提取时间数据并将其格式化为 HH:MM。我已经能够使用
完成此操作
paste(hour(datetime), minute(datetime), sep=':')
有一个例外:当分钟数小于 10 时。当我这样做时,分钟函数只是 returns 没有前导 0 的分钟数。例如:
library(lubridate)
datetime = ymd_hms('2018-11-18 14:00:00')
minute(datetime)
这给出了
的输出
> minute(datetime)
[1] 0
我相信有使用 hms 或其他 packages/functions 或通过构建 if-then 的选项,但我想尽量减少依赖性和复杂性并坚持使用 lubridate 的细节来实现我的目标 if完全有可能。
(注意:我意识到 hour() 也存在同样的问题,但我使用的所有时间都是 PM,所以在我的情况下并不那么紧迫)。
使用 format
您可以在指定后获得自己的自定义日期格式 -
> format(datetime, "%M")
[1] "00"
或
谢谢@Ronak -
> sprintf("%02d", minute(datetime))
[1] "00"
你为什么要做这些额外的工作?只需直接从您的日期时间 (POSIXct) 对象获取时间。
strftime(datetime, "%H:%M")
# [1] "14:00"
我正在研究从 R 中的 dttm 对象中提取时间数据并将其格式化为 HH:MM。我已经能够使用
完成此操作paste(hour(datetime), minute(datetime), sep=':')
有一个例外:当分钟数小于 10 时。当我这样做时,分钟函数只是 returns 没有前导 0 的分钟数。例如:
library(lubridate)
datetime = ymd_hms('2018-11-18 14:00:00')
minute(datetime)
这给出了
的输出> minute(datetime)
[1] 0
我相信有使用 hms 或其他 packages/functions 或通过构建 if-then 的选项,但我想尽量减少依赖性和复杂性并坚持使用 lubridate 的细节来实现我的目标 if完全有可能。
(注意:我意识到 hour() 也存在同样的问题,但我使用的所有时间都是 PM,所以在我的情况下并不那么紧迫)。
使用 format
您可以在指定后获得自己的自定义日期格式 -
> format(datetime, "%M")
[1] "00"
或
谢谢@Ronak -
> sprintf("%02d", minute(datetime))
[1] "00"
你为什么要做这些额外的工作?只需直接从您的日期时间 (POSIXct) 对象获取时间。
strftime(datetime, "%H:%M")
# [1] "14:00"