Eu tenho esse código que imprime a diferença de horário em milissegundos.
#!/usr/bin/python
import datetime
import sys
date1= datetime.datetime.strptime('20231107-08:52:53.539', '%Y%m%d-%H:%M:%S.%f')
date2= datetime.datetime.strptime('20231107-08:52:53.537', '%Y%m%d-%H:%M:%S.%f')
diff = date1-date2
sys.stdout.write(str(diff) + '\t')
date1= datetime.datetime.strptime('20231107-08:52:53.537', '%Y%m%d-%H:%M:%S.%f')
date2= datetime.datetime.strptime('20231107-08:52:53.537', '%Y%m%d-%H:%M:%S.%f')
diff = date1-date2
sys.stdout.write(str(diff) + '\t')
date1= datetime.datetime.strptime('20231107-08:52:53.532', '%Y%m%d-%H:%M:%S.%f')
date2= datetime.datetime.strptime('20231107-08:52:53.537', '%Y%m%d-%H:%M:%S.%f')
diff = date1-date2
sys.stdout.write(str(diff) + '\n')
E imprime isso, sem consistência
$ python./prntdatetest.py
0:00:00.002000 <tab> 0:00:00 <tab> -1 dia, 23:59:59.995000
Eu quero que isso seja impresso assim
00:00:00.002 <guia> 00:00:00.000 <guia> -0:00:00.005
Não quero usar o print , mas quero usar stdout.write
Como posso fazer isso?
Você pode definir a seguinte função de formatação:
Saída:
Obs: isso trata valores até no dia. Para deltas >= 1 dia, você precisa atualizar a função.
use
diff.total_seconds()
para obter o número absoluto de segundos em um objeto timedelta.A partir daí, use módulo e divisão para separar horas, minutos e segundos:
É claro que você ficará melhor se fatorar a formatação de string acima em uma função auxiliar separada.