Проверка, если строка даты в формате UTC

У меня есть строка даты типа "2011-11-06 14:00:00+00:00". Есть ли способ проверить это в формате UTC или нет? Я попытался преобразовать вышеупомянутую строку в объект datetime, используя 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 ответа

Простое регулярное выражение сделает:

>>> 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 просто передает работу по разбору строк времени на с strptime и разные ароматы c принимают разные директивы. В вашем случае (и моем, кажется) %z директива не принимается.

На страницах документации есть некоторая двусмысленность по этому поводу. datetime.datetime.strptime документы указывают на спецификацию формата для time.strptime который не содержит строчных букв %z директива, и указывает, что

На некоторых платформах могут поддерживаться дополнительные директивы, но только перечисленные здесь имеют значение, стандартизированное ANSI C.

Но тогда это также указывает здесь, который содержит строчные %z, но повторяет, что

Полный набор поддерживаемых кодов формата варьируется в зависимости от платформы, потому что Python вызывает функцию strftime() библиотеки С, и изменения платформы являются общими.

Есть также сообщение об ошибке по этой проблеме.

Под "в формате UTC" вы на самом деле имеете в виду ISO-8601?, Это довольно распространенный вопрос.

Другие вопросы по тегам