Неожиданная отрицательная дельта-дата-время, причина и возможное решение - PullRequest
0 голосов
/ 22 сентября 2019

При вычислении разницы между отметками времени я столкнулся с неожиданным поведением, и мне стало интересно, что является причиной и возможным исправлением.

Из приведенного ниже кода последний результат кажется отрицательным, хотя я ожидал 0:00:00.00000224000

import datetime
def delta_timestamps(d1, d2):
    d1 = datetime.datetime.strptime(d1, "%Y-%m-%d %H:%M:%S %f")
    d2 = datetime.datetime.strptime(d2, "%Y-%m-%d %H:%M:%S %f")
    return d1 - d2

print(delta_timestamps("2017-10-05 16:06:06 278001", "2017-10-05 16:06:06 278000"))
>>>0:00:00.000001
print(delta_timestamps("2017-10-05 16:06:06 278000", "2017-10-05 16:06:06 54000"))
>>> -1 day, 23:59:59.738000    

Почему возвращается отрицательное значение?Как мы можем получить фактическую ожидаемую дельту?

1 Ответ

0 голосов
/ 23 сентября 2019
Предложение

@ dildelupbiten сработало, поэтому перед передачей значений в delta_timestamps я заполнил часть микросекунды с нулями 0 (например, milliseconds.zfill(6))

def datetime_as_str_ms_formatting(s: str) -> str:
    s_splitted = s.split(" ")
    return " ".join(s_splitted[:2] +[s_splitted[2].zfill(6)])

print(delta_timestamps(datetime_as_str_ms_formatting("2017-10-05 16:06:06 278000"),
                       datetime_as_str_ms_formatting("2017-10-05 16:06:06 54000")))

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