如何在格式为“0000-00-00T00:00:00+00:00”的字符串上使用 datetime.strptime?

Jes*_*sse 6 python datetime strptime

由于我的应用程序的情况,我更愿意使用datetime.strptime而不是dateutil.parser.

查看文档后,我认为这%Y-%m-%dT%H:%M:%S%z可能是解析这样的日期字符串的正确格式。但它仍然给我一个错误。

例子

from datetime import datetime

d = '0000-00-00T00:00:00+00:00'
datetime.strptime(d, '%Y-%m-%dT%H:%M:%S%z')
Run Code Online (Sandbox Code Playgroud)
ValueError: time data '0000-00-00T00:00:00+00:00' does not 
            match format '%Y-%m-%dT%H:%M:%S%z'
Run Code Online (Sandbox Code Playgroud)

ilj*_*lja 4

处理时区的最简单方法是使用dateutil.parser

from dateutil.parser import parse
date_obj = parse('1970-01-01T00:00:00+00:00')

date_obj

> datetime.datetime(1970, 1, 1, 0, 0, tzinfo=tzutc())
Run Code Online (Sandbox Code Playgroud)

但是你必须传递一个有效的日期时间值(不仅仅是零......)

如果您想使用strptime(),时区必须采用0000not格式00:00,所以这有效:

d = '1900-02-05T11:43:32+0000'
datetime.strptime(d, '%Y-%m-%dT%H:%M:%S%z')

> datetime.datetime(1900, 2, 5, 11, 43, 32, tzinfo=datetime.timezone.utc)
Run Code Online (Sandbox Code Playgroud)