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

Python 检查日期字符串是否为UTC格式,python,datetime,pytz,Python,Datetime,Pytz,我有一个日期字符串,比如“2011-11-06 14:00:00+00:00”。有没有办法检查这是否为UTC格式?。我试图使用utc=datetime.strtime('2011-11-06 14:00:00+00:00','%Y-%m-%d%H:%m%S+%z')将上述字符串转换为datetime对象,以便可以将其与pytz.utc进行比较,但我得到的'ValueError:'z'是格式为'%Y-%m-%d%H:%m%S+%z'的错误指令 如何检查日期字符串是否以UTC为单位?。请举个例子 谢

我有一个日期字符串,比如“2011-11-06 14:00:00+00:00”。有没有办法检查这是否为UTC格式?。我试图使用
utc=datetime.strtime('2011-11-06 14:00:00+00:00','%Y-%m-%d%H:%m%S+%z')将上述字符串转换为datetime对象,以便可以将其与pytz.utc进行比较,但我得到的'ValueError:'z'是格式为'%Y-%m-%d%H:%m%S+%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

格式字符串的问题在于,
strptime
只是将解析时间字符串的任务传递给c的
strptime
,不同风格的c接受不同的指令。在您(和我)的情况下,
%z
指令不被接受

关于这一点,文档页面有些含糊不清。文档指向的格式规范不包含小写的
%z
指令,并指出

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

但它也指出了哪些确实包含小写的
%z
,但重申了这一点

由于Python调用平台C库的strftime()函数,所以支持的全套格式代码在不同平台上有所不同,而且平台的变化也很常见


关于这个问题还有一个问题。

你说的“UTC格式”实际上是什么意思。这是一个很好的例子

@S.Lott,我认为小写的
%z
即使在Python3中也是无效的。如果是,则表示错误。@senderle:。你是说“%z”只用于strftime?如果是这样的话,那么我认为您应该将其作为答案发布。旁白:给定的字符串实际上不是有效的iso-8601日期时间,而是两个有效值(一个是日期,另一个是时间)。该标准在与
T
相连的日期/时间值和仅相邻的值之间划出了一条相当清晰的界线。