额外的T和Z让我失望:
strptime("2017-06-08T11:55:53.179000Z", "%Y-%m-%dT%H:%M:%SZ")
返回NA
答案 0 :(得分:3)
只需使用anytime包的anytime()
功能:
R> anytime("2017-06-08T11:55:53.179000Z")
[1] "2017-06-08 11:55:53.178 CDT"
R>
anytime包的重点是解析此类常用格式,而无需格式。通过Boost解析器免费处理尾随Z
。
如果您希望将其解释为UTC,请使用相应的utctime()
包:
R> utctime("2017-06-08T11:55:53.179000Z")
[1] "2017-06-08 06:55:53.178 CDT"
R>
如果您希望将其存储为UTC,请相应地设置时区:
R> utctime("2017-06-08T11:55:53.179000Z", tz="UTC")
[1] "2017-06-08 11:55:53.178 UTC"
R>
答案 1 :(得分:1)
根据?strptime
,您可以通过设置%OS
选项,使用digits.secs
参数对其进行解析:
特定于R是%OSn,对于输出,将秒截断为 0 <= n <= 6个小数位(和如果%OS后面没有数字,那么 使用getOption(“digits.secs”)的设置,或者如果未设置,则n = 0 强>)。此外,对于strptime%OS将输入包括分数的秒 秒。请注意,%S不会在输出中读取小数部分。
options(digits.secs = 6)
strptime("2017-06-08T11:55:53.179000Z", "%Y-%m-%dT%H:%M:%OSZ")
# [1] "2017-06-08 11:55:53.179 EDT"