Использование timedelta для вычисления дельты между двумя значениями ISO8601 - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь вычислить дельту между двумя значениями времени в формате ISO8601. Я заинтересован в поддержании 6 значимых цифр, которые соответствуют стандарту времени. Я обнаружил функцию "timedelta", но не могу заставить ее работать правильно.

a = datetime.datetime.strptime('2018-05-09T18:28:55.251537', '%Y-%m-%dT%H:%M:%S.%f%f%f%f%f%f')
b = datetime.datetime.strptime('2018-05-09T18:51:55.251537', '%Y-%m-%dT%H:%M:%S.%f%f%f%f%f%f')

Есть мысли о том, как я могу вычислить разницу между этими двумя значениями до миллисекунды?

EDIT: Мой фактический код ниже:

command = "NAME,COMMAND,2018-05-10T18:31:30.515276"
command_lis = command.replace("/n"," ").split(",")
print("Received the following time: " + command_lis[2])
a = datetime.datetime.strptime(datetime.datetime.utcnow().isoformat(), '%Y-%m-%dT%H:%M:%S.%f')
print("a is set")
b = datetime.datetime.strptime(command_lis[2], '%Y-%m-%dT%H:%M:%S.%f')
print("b is set")
delta = b - a
print(delta)

1 Ответ

0 голосов
/ 15 мая 2018

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

% python
Python 2.7.8 (default, Apr 25 2018, 00:29:19) 
[GCC 4.1.2 20070626 (Red Hat 4.1.2-14)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> command = "NAME,COMMAND,2018-05-10T18:31:30.515276"
>>> command_lis = command.replace("/n"," ").split(",")
>>> print("Received the following time: " + command_lis[2])
Received the following time: 2018-05-10T18:31:30.515276
>>> a = datetime.datetime.strptime(datetime.datetime.utcnow().isoformat(), '%Y-%m-%dT%H:%M:%S.%f')
>>> print("a is set")
a is set
>>> b = datetime.datetime.strptime(command_lis[2], '%Y-%m-%dT%H:%M:%S.%f')
>>> print("b is set")
b is set
>>> delta = b - a
>>> print(delta)
-5 days, 18:25:54.502559

У тебя другое поведение?

...