首页 > 解决方案 > 为什么在 datetime.time 毫秒字段中添加了三个额外的零?

问题描述

我正在解析一个日志文件并将不同的值保存在不同的变量中。当我在其中插入毫秒时,datetime.time(hour,minute,second,millisecond)它会在毫秒值前面添加三个额外的零,为什么?

lst = ['13', '33', '30.913']
hour = int(time[0], 10)
minute = int(time[1], 10)
second = int((time[2].split('.'))[0], 10)
millisecond = int((time[2].split('.'))[1], 10)
print(millisecond)
time = datetime.time(hour, minute, second, millisecond)
print(time)

我期望13:33:30:913来自print(time),但实际输出是13:33:30:000913

print(millisecond)但是is的输出913是正确的。

标签: pythondatetimemilliseconds

解决方案


的第四个参数datetime.time实际上是微秒而不是毫秒:

datetime.time(hour=0, minute=0, second=0 , microsecond =0 , tzinfo=None, *, fold=0)

为了使您的代码工作,您应该将您的毫秒乘以 1000,并且可以使用以下isoformat方法完成打印:

time = datetime.time(hour, minute, second, millisecond * 1000)
print(time.isoformat('milliseconds'))

推荐阅读