ilk*_*las 192 python time date datetime-parsing
我能够用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
DNS*_*DNS 296
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
And*_*ern 12
我知道这是一个较旧的问题,但我仍在使用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"
| 归档时间: | 
 | 
| 查看次数: | 172870 次 | 
| 最近记录: |