2013-02-27 456 views
6

我对JSON webservice使用默认的python datetime字符串格式。带时区的默认日期时间字符串格式

然后,我试图将它与实际的日期时间进行比较。而且我还使用pytz.utc的时区。

这里是我的字符串日期:

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

尝试我的字符串转换成DATETIME(编辑对时区与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格式,用我的约会?

+0

虽然您不能将意识到的时区与datetime.now()进行比较,但您必须给后者一个时区。请参阅[如何在python中感知不知道的日期时间时区](http://stackoverflow.com/q/7065164) – 2013-02-27 20:06:17

+0

你对这个副本是正确的,谢谢。谷歌没有给我什么......对于时区,我实际上是在我的代码中使用'datetime.now(pytz.utc)'。对不起,误导.... – Arthur 2013-02-27 20:07:45

回答

3

基本上这是因为日期时间模块事先不知道可用时区是什么。这有点蹩脚。

我推荐使用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))