我有一个日期字符串,如“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?一些例子将非常感激。
谢谢
答案 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)