Python 意外的负增量datetime时间戳原因和可能的解决方案

Python 意外的负增量datetime时间戳原因和可能的解决方案,python,datetime,python-3.7,Python,Datetime,Python 3.7,在计算时间戳之间的差异时,我遇到了一个意外的行为,我想知道原因是什么以及最终的解决办法 从下面的代码来看,最新的结果似乎是否定的,而我预期的是0:00:00.00000224000 导入日期时间 def delta_时间戳(d1、d2): d1=datetime.datetime.StrTime(d1,“%Y-%m-%d%H:%m:%S%f”) d2=datetime.datetime.StrTime(d2,“%Y-%m-%d%H:%m:%S%f”) 报税表d1-d2 打印(delta_时间戳(

在计算时间戳之间的差异时,我遇到了一个意外的行为,我想知道原因是什么以及最终的解决办法

从下面的代码来看,最新的结果似乎是否定的,而我预期的是
0:00:00.00000224000

导入日期时间
def delta_时间戳(d1、d2):
d1=datetime.datetime.StrTime(d1,“%Y-%m-%d%H:%m:%S%f”)
d2=datetime.datetime.StrTime(d2,“%Y-%m-%d%H:%m:%S%f”)
报税表d1-d2
打印(delta_时间戳(“2017-10-05 16:06:06 278001”、“2017-10-05 16:06:06 278000”))
>>>0:00:00.000001
打印(delta_时间戳(“2017-10-05 16:06:06 278000”、“2017-10-05 16:06:06 54000”))
>>>-1天,23:59:59.738000

为什么返回负值?我们如何获得实际的预期增量?

@dildlupbiten的建议奏效了,因此在将值传递给
delta\u时间戳之前,我在微秒部分填充了引线0(例如
毫秒.zfill(6)

def datetime\u as\u str\u ms\u格式(s:str)->str:
s_splited=s.split(“”)
返回“”。联接(s_分割[:2]+[s_分割[2].zfill(6)])
打印(delta_时间戳(datetime_as_str_ms_格式(“2017-10-05 16:06:06 278000”),
日期时间格式(“2017-10-05 16:06:06 54000”))
>>> 0:00:00.224000

我认为您应该将第二个
print
语句更改如下:
print(delta_时间戳(“2017-10-05 16:06:06 278000”,“2017-10-05 16:06:06 054000”)