我有一个日期字符串,如"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)
将上述字符串转换为datetime对象,以便我可以将其与pytz进行比较。在格式'%Y-%m-%d %H:% m %S+%z'中,'z'是一个坏指令'
如何检查日期字符串是否是UTC格式?请举个例子。
谢谢
一个简单的正则表达式就可以:
>>> 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
你所说的" in UTC format "实际上是指ISO-8601吗?这是一个很常见的问题。
格式字符串的问题是strptime
只是将解析时间字符串的工作传递给c的strptime
,不同风格的c接受不同的指令。在您的情况下(和我的情况下,似乎),%z
指令是不被接受的。
在文档页面中有一些模棱两可的地方。datetime.datetime.strptime
文档指向time.strptime
的格式规范,其中不包含小写的%z
指令,并指示
在某些平台上可能支持其他指令,但只有这里列出的指令具有ANSI c标准化的含义。
但是它也指向这里包含小写的%z
,但是重申
支持的完整格式代码集因平台而异,因为Python调用平台C库的strftime()函数,并且平台差异很常见。
还有一个关于这个问题的bug报告。