2

我有一个日期字符串,例如“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' is a bad directive in format '%Y-%m-%d %H: %M%S+%z'

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

谢谢你

4

3 回答 3

5

A simple regular expression will do:

>>> 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
于 2011-07-15T15:30:32.283 回答
2

您所说的“UTC 格式”实际上是指ISO-8601 吗?. 这是一个 常见的 问题

于 2011-07-15T16:05:00.993 回答
2

您的格式字符串的问题在于,它strptime只是将解析时间字符串的工作传递给 c's strptime,并且不同风格的 c 接受不同的指令。在您的情况下(似乎是我的情况),该%z指令不被接受。

文档页面中对此存在一些歧义。datetime.datetime.strptime文档指向time.strptime不包含小写指令的格式规范%z,并指出

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

但它也指出这里确实包含一个小写字母%z,但重申

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

还有一个关于这个问题的错误报告。

于 2011-07-15T15:38:47.023 回答