Дата разбора, которая может содержать или не содержать миллисекунды - PullRequest
0 голосов
/ 09 ноября 2018

Так что этот вопрос - лучший способ справиться с такого рода вводом в python.Вот пример ввода даты 2018-12-31 23:59:59.999999.Миллисекундная часть может быть или не быть частью ввода.

В настоящее время я использую этот код для преобразования его в datetime

input_ts = datetime.datetime.strptime(input_str, '%Y-%m-%dT%H:%M:%S.%f')

Но проблема в этом случае заключается в том, что он выдаст исключение, если входная строка не содержит части в миллисекундах, т.е.2018-12-31 23:59:59

В Java я мог бы подойти к этой проблеме двумя способами.(это псевдо объяснение, без учета мелких пограничных проверок)

  1. (предпочтительный подход).Проверьте длину входной строки.если его меньше чем 19 , то он пропускает миллисекунды.Добавить .000000 к нему.

  2. (не предпочтительно).Позвольте основному коду проанализировать строку, если она выдает исключение, а затем проанализировать ее с новым форматом времени, то есть %Y-%m-%dT%H:%M:%S

  3. Третий подход может состоять в том, чтобы просто отбросить миллисекунды.

Я не уверен, что в python есть что-то встроенное для обработки подобных ситуаций.Есть предложения?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018
from datetime import datetime # import datetime class from datetime package

dt = datetime.now() # get current time
dt1 = dt1.strftime('%Y-%m-%d %H:%M:%S') # converting time to string
dt3 = dt2.strptime('2018/5/20','%Y/%m/%d') # converting a string to specified time
0 голосов
/ 09 ноября 2018

Вы можете использовать библиотеку python-dateutil , она достаточно умна, чтобы анализировать большинство основных форматов даты.

import dateutil.parser
dateutil.parser.parse('2018-12-31 23:59:59.999999')
dateutil.parser.parse('2018-12-31 23:59:59')

Если вы не хотите устанавливать какие-либо внешние библиотеки, вы можете перебрать список различных форматов, как предложено в этом ответе .

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