默认的带时区的日期时间字符串格式

9 投票
1 回答
28218 浏览
提问于 2025-04-17 17:21

我正在使用默认的Python日期时间字符串格式,配合一个JSON网络服务。

然后,我想把这个字符串和一个实际的日期时间进行比较。而且我还在使用时区,使用的是pytz.utc

这是我的字符串日期:

print date
2013-02-26 21:28:37.261134+01:00

我试着把这个字符串转换成日期时间(为了时区的处理,使用pytz):

if datetime.strptime(date, '%Y-%m-%d %H:%M:%S.%f+%Z') < datetime.now(pytz.utc):

可惜,这个方法不行。

ValueError: time data '2013-02-26 21:28:37.261134+01:00' does not match format '%Y-%m-%d %H:%M:%S.%f%Z'

有没有人能告诉我strptime的正确语法,来处理我的日期?

1 个回答

7

其实这是因为datetime模块事先并不知道有哪些可用的时区。这点有点让人失望。

我建议你使用dateutil。这是一个第三方的包,但它可以直接解析你的字符串。

>>> import dateutil.parser
>>> dateutil.parser.parse('2013-02-26 21:28:37.261134+01:00')                                                                                                                                                                                                                  
datetime.datetime(2013, 2, 26, 21, 28, 37, 261134, tzinfo=tzoffset(None, 3600))

撰写回答