Проверка, если строка даты в формате 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?, Это довольно распространенный вопрос.