我搜索并搜索了几个小时,但找不到答案。我需要转换时间格式为“1:36:22 PM”。我自己不会以这种格式存储数据,但我从其他程序员那里继承了这些文件。
我尝试了as.POSIXct()和strptime()的各种排列,但是无法实现。例如,这未能发现PM的重要性:
t <- "1:36:22 PM"
> as.POSIXct(t, format = "%H:%M:%S")
[1] "2016-09-08 01:36:22 BST"
然后失败了:
> strptime(t, "%H:%M:%S")
[1] NA
奇怪的是,由于我无法理解的原因,从输入CAN中删除秒数:
> t <- "1:30:00 PM"
> strptime(t, "%I:%M %p")
[1] NA
> t <- "1:30 PM"
> strptime(t, "%I:%M %p")
[1] "2016-09-08 13:30:00 BST"
我想要的就是让它发挥作用:
t <- "1:30:00 PM"
SOME COMMAND HERE HERE
[1] "13:30:00"
有什么想法吗?
答案 0 :(得分:3)
使用%l和%p。
strptime(t, "%l:%M:%S %p")
答案 1 :(得分:2)
您是否尝试过使用lubridate包装?它可以使用“parse_date_time”函数中的%p指示符来处理AM / PM。
awk '
# start writing to new segment file segment.01 etc
match($0, /<BaseURL>([0-9]+)\/<\/BaseURL>/, m) {
base=m[1]
close(segf)
segf="segment." base
print "write segments to " segf
print >segf
}
/<SegmentURL / {print >segf}
END {close(segf)}
' mpd
%I: 小时数十进制数(01-12或1-12)。
%M: 分钟为十进制数字(00-59或0-59)。
%S: 秒作为十进制数字(00-61或0-61)。
语言环境中的%P: AM / PM指示符。与I一起使用而不与H.一起使用。某些语言环境中的空字符串。