检查日期字符串是否为UTC格式

时间:2011-07-15 15:19:13

标签: python datetime pytz

我有一个日期字符串,如“2011-11-06 14:00:00 + 00:00”。有没有办法检查这是否是UTC格式?我尝试使用utc = datetime.strptime('2011-11-06 14:00:00+00:00','%Y-%m-%d %H:%M%S+%z)将上面的字符串转换为日期时间对象,以便我可以将它与pytz.utc进行比较,但我得到'ValueError:'z'是格式'%Y-%m-的错误指令%d%H:%M%S +%z'

如何检查日期字符串是否为UTC?一些例子将非常感激。

谢谢

3 个答案:

答案 0 :(得分:5)

一个简单的正则表达式可以:

>>> import re
>>> RE = re.compile(r'^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2}$')
>>> bool(RE.search('2011-11-06 14:00:00+00:00'))
True

答案 1 :(得分:2)

格式字符串的问题是strptime只是将解析时间字符串的工作传递给c的strptime,而不同的c语言接受不同的指令。在您的情况下(以及我的情况),不接受%z指令。

有关此问题的文档页面存在一些含糊之处。 datetime.datetime.strptime文档指向time.strptime的格式规范,该格式规范不包含小写%z指令,并指示

  

某些平台可能支持其他指令,但只有此处列出的指令具有ANSI C标准化的含义。

但是它也指向包含小写%z的{​​{3}},但重申

  

支持的全套格式代码因平台而异,因为Python调用平台C库的strftime()函数,并且平台变体很常见。

此问题还有here

答案 2 :(得分:2)

按'UTC格式',你的意思是ISO-8601?。这是pretty common question