用微秒解析日期时间字符串

Man*_*ron 14 python datetime parsing

我有一个文本文件,在isoformat中有很多日期时间字符串.字符串类似于:

'2009-02-10 16:06:52.598800'

这些字符串是使用生成的str(datetime_object).问题是,由于某种原因,str(datetime_object)当datetime对象的微秒设置为零时生成不同的格式,并且某些字符串如下所示:

'2009-02-10 16:06:52'

如何解析这些字符串并将其转换为日期时间对象

获取对象中的所有数据非常重要,包括微秒.

我必须使用Python 2.5,我发现%f2.5中不存在微秒的格式指令.

Eli*_*sky 21

或者:

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]))
Run Code Online (Sandbox Code Playgroud)

使用strptime自己来解析日期/时间字符串(因此不需要考虑正则表达式的极端情况).


Sov*_*iut 11

使用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
Run Code Online (Sandbox Code Playgroud)

结果是:

598799
Run Code Online (Sandbox Code Playgroud)


RSa*_*bet 5

有人已经提出了这个问题的错误:1982年的问题.由于您需要使用它来使用python 2.5,您必须手动解析该值,然后操作datetime对象.