Какой правильный формат даты и времени для указанной строки даты? - PullRequest
0 голосов
/ 12 мая 2019

У меня есть следующая строка даты: 2019-05-12T14:52:13.136621898Z

Насколько я могу судить, формат не могу понять.Ближайшая строка формата datetime, которая будет иметь для меня смысл:

%Y-%m-%dT%H:%M:%S.%fZ

Я искал StackOverflow, Google и документы Python.

Ответы [ 2 ]

2 голосов
/ 12 мая 2019

Для таких проблем стоит посмотреть на модуль datetime и его функцию parser.parse, которая анализирует любую строку даты и времени без необходимости указывать формат!

from dateutil import parser

dt_obj = parser.parse('2019-05-12T14:52:13.136621898Z')
print(dt_obj)

Также самый близкий форматчто соответствует вашему требованию: '%Y-%m-%dT%H:%M:%S.%fZ', которое работает с 2019-05-12T14:52:13.136621Z, где '.% f` инкапсулирует микросекунды с 6 десятичными знаками, но, поскольку у вашего десятичного знака есть 9 десятичных знаков, это не сработает для вас!

0 голосов
/ 12 мая 2019

Формат называется «формат туда и обратно», и у Python нет спецификатора формата для него, в то время как, например, .NET имеет спецификатор формата o .Поэтому может быть немного сложнее создать строку формата:

  • В вашем случае в ней есть 9 цифр для секунд.@Devesh сказал, что это должно быть 8 цифр, а .NET Framework использует для этого 7 цифр.Но, как правило, %f должно быть в порядке.
  • Вы не можете использовать жестко Z в конце, потому что это часовой пояс.Z будет работать только для UTC, но будет игнорировать все остальные часовые пояса.Спецификатор формата часового пояса: %z

Как datetime говорит:

utcoffset () преобразуется в строку вида ± ЧЧММ[SS [.ffffff]], где HH - двузначная строка, указывающая количество часов смещения UTC, MM - двузначная строка, указывающая количество минут смещения UTC, SS - двузначная строка, указывающая числоСекунды смещения UTC, а ffffff - это шестизначная строка, указывающая количество микросекунд смещения UTC.Часть ffffff опускается, когда смещение составляет целое число секунд, а часть ffffff и SS опускается, когда смещение составляет целое число минут.Например, если utcoffset () возвращает timedelta (часы = -3, минуты = -30),% z заменяется строкой '-0330'

и

Например, '+01: 00: 00' будет обрабатываться как смещение в один час.Кроме того, предоставление «Z» идентично «+00: 00»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...