我有一个文本文件,在isoformat中有很多日期时间字符串.字符串类似于:
'2009-02-10 16:06:52.598800'
这些字符串是使用生成的str(datetime_object)
.问题是,由于某种原因,str(datetime_object)
当datetime对象的微秒设置为零时生成不同的格式,并且某些字符串如下所示:
'2009-02-10 16:06:52'
如何解析这些字符串并将其转换为日期时间对象?
获取对象中的所有数据非常重要,包括微秒.
我必须使用Python 2.5,我发现%f
2.5中不存在微秒的格式指令.
或者:
from datetime import datetime def str2datetime(s): parts = s.split('.') dt = datetime.strptime(parts[0], "%Y-%m-%d %H:%M:%S") return dt.replace(microsecond=int(parts[1]))
使用strptime
自己来解析日期/时间字符串(因此不需要考虑正则表达式的极端情况).
使用dateutil模块.它支持比内置Python更广泛的日期和时间格式.
您需要easy_install dateutil才能使以下代码正常工作:
from dateutil.parser import parser p = parser() datetime_with_microseconds = p.parse('2009-02-10 16:06:52.598800') print datetime_with_microseconds.microsecond
结果是:
598799
有人已经提出了这个问题的错误:1982年的问题.由于您需要使用它来使用python 2.5,您必须手动解析该值,然后操作datetime对象.