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

9

我正在使用默认的Python datetime字符串格式与JSON webservice一起使用。

然后,我尝试将其与实际datetime进行比较。我还使用了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格式的正确语法来处理我的日期吗?


你不能直接将已知时区的时间与 datetime.now() 进行比较,你需要给后者指定一个时区。请参考 如何在 Python 中将无时区的 datetime 转换为有时区的 datetime - Martijn Pieters
你说的重复问题是对的,谢谢。Google 没有给我任何信息... 关于时区,我实际上在我的代码中使用了 datetime.now(pytz.utc)。抱歉给你带来了误导... - Arthur
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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接