Почему в поле миллисекунд datetime.time добавляются три дополнительных нуля? - PullRequest
0 голосов
/ 27 июня 2019

Я анализирую файл журнала и сохраняю разные значения в разных переменных. Когда я вставляю миллисекунды в 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) равен 913, что является правильным.

1 Ответ

1 голос
/ 27 июня 2019

4-й аргумент datetime.time на самом деле микросекунда, а не миллисекунда:

datetime.time (час = 0, минута = 0, секунда = 0, микросекунда = 0 , tzinfo = нет, *, сгиб = 0)

Чтобы ваш код работал, вы должны умножить свою миллисекунду на 1000, и печать может быть выполнена с использованием метода isoformat:

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