格式化日期时间时未检测到时区

时间:2012-03-10 11:31:17

标签: python django

我有一个这种格式的字符串:Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time),我要将其转换为以下格式:2012-02-27T13:15:00.000,我已经这样做了:

startTime=`Mon Feb 27 2012 13:15:00 GMT+0330 (Iraq Standard Time)`
strp_time = time.strptime(startTime, '%a %b %d %Y %H:%M:%S %Z')
start = time.strftime('%Y-%m-%dT%H:%M:%S',strp_time)

但它导致了这个错误:

unconverted data remains: +0330 (Iraq Standard Time)

所以,我尝试删除(Iraq Standard Time)

start=re.sub(r' \(.+?\)$', '', startTime)
strp_time = time.strptime(start, '%a %b %d %Y %H:%M:%S %Z')
start = time.strftime('%Y-%m-%dT%H:%M:%S',strp_time)

但是,我收到了这个错误:

unconverted data remains: +0330

1 个答案:

答案 0 :(得分:1)

如果您将正则表达式更改为:

start=re.sub(r'(\+.*)|(\-.*)$', '', startTime)

它可以工作,因为你也可以去除时区差异信息(+或 - ),这对你来说没问题,因为你无论如何都要丢弃%Z数据。

您应该可以使用%z来获得+0330的时差,但它不适用于我的Python版本,可能是由于一个错误。对于Python 3.2来说似乎已经解决了,请参阅http://bugs.python.org/issue6641