如何在R中解析java简单日期格式?

时间:2017-06-08 21:20:30

标签: r date time

额外的T和Z让我失望:

strptime("2017-06-08T11:55:53.179000Z", "%Y-%m-%dT%H:%M:%SZ")

返回NA

2 个答案:

答案 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"