web-dev-qa-db-fra.com

convertir l'heure en millisecondes en date / heure

J'ai utilisé un script Ruby pour convertir l'horodatage iso en Epoch, les fichiers que je suis en train d'analyser ont la structure d'horodatage suivante:

2009-03-08T00:27:31.807

Depuis que je veux garder millisecondes, j'ai utilisé après Ruby pour le convertir en temps Epoch:

irb(main):010:0> DateTime.parse('2009-03-08T00:27:31.807').strftime("%Q")
=> "1236472051807"

Mais dans python j'ai essayé de suivre:

import time 
time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807))

Mais je ne récupère pas la date et l'heure d'origine,

>>> time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807))
'41152-03-29 02:50:07'
>>> 

Je me demande si cela est lié à la façon dont je formate?

61
add-semi-colons

Utilisation datetime.datetime.fromtimestamp :

>>> import datetime
>>> s = 1236472051807 / 1000.0
>>> datetime.datetime.fromtimestamp(s).strftime('%Y-%m-%d %H:%M:%S.%f')
'2009-03-08 09:27:31.807000'

%f La directive n’est supportée que par datetime.datetime.strftime , pas par time.strftime .

[~ # ~] met à jour [~ # ~] Alternative utilisant % , str.format :

>>> import time
>>> s, ms = divmod(1236472051807, 1000)  # (1236472051, 807)
>>> '%s.%03d' % (time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(s)), ms)
'2009-03-08 00:27:31.807'
>>> '{}.{:03d}'.format(time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(s)), ms)
'2009-03-08 00:27:31.807'
115
falsetru

ce sont des millisecondes, il suffit de les diviser par 1000, car gmtime attend quelques secondes ...

time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime(1236472051807/1000.0))
16
Joran Beasley