【发布时间】:2021-08-04 07:34:08
【问题描述】:
我尝试将以下字符向量转换为日期时间格式(“%Y-%m-%d %H:%M:%S”),但无法成功转换午夜时间戳。如果向量在同一操作中同时包含日期(午夜 00:00:00)和日期时间。任何方便的选项都可以做到这一点。请忽略字符长度和粘贴选项。谢谢。
dttime=c()
dttime=c("2021-08-03 11:59:59", "2021-08-03 12:59:59", "2021-08-03",
"2021-08-03 16:59:59")
strptime(dttime, format = "%Y-%m-%d %H:%M:%S")
[1] "2021-08-03 11:59:59 IST" "2021-08-03 12:59:59 IST" NA "2021-08-03 16:59:59 IST
as.POSIXct(dttime, format = "%Y-%m-%d %H:%M:%S")
[1] "2021-08-03 11:59:59 IST" "2021-08-03 12:59:59 IST" NA "2021-08-03 16:59:59 IST"
format(dttime, format = "%Y-%m-%d %H:%M:%S")
[1] "2021-08-03 11:59:59" "2021-08-03 12:59:59" "2021-08-03 " "2021-08-03 16:59:59
期望的输出是:
dttime
[1] "2021-08-03 11:59:59" "2021-08-03 12:59:59" "2021-08-03 00:00:00" "2021-08-03 16:59:59
任何其他可用的现有方法。
dttime[nchar(dttime)<19]=paste(dttime[nchar(dttime)<19],"00:00:00")
> dttime
[1] "2021-08-03 11:59:59" "2021-08-03 12:59:59" "2021-08-03 00:00:00" "2021-08-03 16:59:59"
【问题讨论】:
-
试试
format()...即format(dttime, '%Y-%m-%d %H:%M:%S')。一般来说 00:00:00 在那里,但它根本不打印 -
@Sotos 在将其写入任何模式或将其作为 csv 文件推送之前,我们如何确保其为“00:00:00”。它的 (format(dttime, format = "%Y-%m-%d %H:%M:%S")[3]=="2021-08-03 00:00:00") 实际上返回 false。
标签: r datetime format posixct strptime