如何解析毫秒?


85

我如何使用Rstrptime或任何其他函数解析R中的毫秒时间戳?

time[1]
# [1] "2010-01-15 13:55:23.975"
strptime(time[1], format="%Y-%m-%d %H:%M:%S.%f")
# [1] NA
strptime(time[1], format="%Y-%m-%d %H:%M:%S")
# [1] "2010-01-15 13:55:23"`

Answers:


121

?strptime帮助文件提供(示例更改为您的值):

 z <- strptime("2010-01-15 13:55:23.975", "%Y-%m-%d %H:%M:%OS")
 z # prints without fractional seconds
 op <- options(digits.secs=3)
 z
 options(op) #reset options

谢谢,我在strptime文档中错过了这一点。我一直在寻找格式字符,但没有看到时就放弃了。
signalseeker

8
如果我可以纪念您,我一定会的!
jkff 2010年

2
我也会!“%OS”位很棒。
Pierre D

这仅在python3中有效吗?在我的python2.7.8中:>>> time.strptime(t,“%Y-%m-%d%H:%M:%OS”)回溯(最近一次调用为最新):文件“ <stdin>”,第1,在<模块>文件“ /opt/pythons/2.7.8/lib/python2.7/_strptime.py”的第467行中,在_strptime_time中返回_strptime(data_string,format)[0]文件“ / opt / pythons / 2.7.8 / lib / python2.7 / _strptime.py“,行_strptime中的第317行(bad_directive,格式))ValueError:'O'是格式为'%Y-%m-%d%H:%的错误指令M:%
OS'– firebush

1
@firebush:在R中。在某些平台上可能需要“%Y-%m-%d%H:%M:%OS3”。帮助页面上将“ OS”格式的实现标记为特定于OS。
IRTFM '16

31

您也可以strptime(time[1], "%OSn")在0 <= n <= 6的情况下使用,而无需进行设置digits.secs

文档指出“其中支持的哪些依赖于操作系统”。YMMV。


2
在Ubuntu上,这对我也不起作用。产生NA。
Prakash
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.