为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用python解析包含毫秒的时间字符串?

如何使用python解析包含毫秒的时间字符串?

智慧大石 2019-10-17 10:44:43
我能够用time.strptime解析包含日期/时间的字符串>>> import time>>> time.strptime('30/03/09 16:31:32', '%d/%m/%y %H:%M:%S')(2009, 3, 30, 16, 31, 32, 0, 89, -1)如何解析包含毫秒的时间字符串?>>> time.strptime('30/03/09 16:31:32.123', '%d/%m/%y %H:%M:%S')Traceback (most recent call last):  File "<stdin>", line 1, in <module>  File "/usr/lib/python2.5/_strptime.py", line 333, in strptime    data_string[found.end():])ValueError: unconverted data remains: .123
查看完整描述

3 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

Python 2.6添加了一个新的strftime / strptime宏%f,该宏的执行时间为微秒。不知道这是否记录在任何地方。但是,如果您使用的是2.6或3.0,则可以执行以下操作:


time.strptime('30/03/09 16:31:32.123', '%d/%m/%y %H:%M:%S.%f')

编辑:我从来没有真正使用过该time模块,所以一开始我没有注意到这一点,但是看起来time.struct_time实际上并不存储毫秒/微秒。最好使用datetime,例如:


>>> from datetime import datetime

>>> a = datetime.strptime('30/03/09 16:31:32.123', '%d/%m/%y %H:%M:%S.%f')

>>> a.microsecond

123000


查看完整回答
反对 回复 2019-10-17
?
白板的微信

TA贡献1883条经验 获得超3个赞

我知道这是一个老问题,但是我仍在使用Python 2.4.3,我需要找到一种更好的方法将数据字符串转换为日期时间。


如果datetime不支持%f并且不需要try / except的解决方案是:


    (dt, mSecs) = row[5].strip().split(".") 

    dt = datetime.datetime(*time.strptime(dt, "%Y-%m-%d %H:%M:%S")[0:6])

    mSeconds = datetime.timedelta(microseconds = int(mSecs))

    fullDateTime = dt + mSeconds 

这适用于输入字符串“ 2010-10-06 09:42:52.266000”


查看完整回答
反对 回复 2019-10-17
  • 3 回答
  • 0 关注
  • 1063 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信