检查日期字符串是否为UTC格式
我有一个日期字符串,比如“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 个回答
2
你这个格式字符串的问题在于,strptime
其实是把解析时间字符串的工作交给了 C 语言的 strptime
,而不同版本的 C 语言支持的指令是不一样的。在你的情况(以及我的情况)中,%z
这个指令是不被接受的。
关于这个问题,文档页面有些模糊。datetime.datetime.strptime
的文档指向了 time.strptime
的格式说明,但那里并没有小写的 %z
指令,并且指出
某些平台可能支持额外的指令,但只有这里列出的指令是 ANSI C 标准化的。
但它又指向了这里,那里确实包含了小写的 %z
,但重申了
支持的完整格式代码在不同平台上是不同的,因为 Python 调用了平台 C 库的 strftime() 函数,而平台之间的差异是很常见的。
此外,还有一个关于这个问题的bug 报告。
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