Heureux de mettre à jour ceci si je ne comprends pas bien, mais voici quelques exemples qui peuvent aider. Notez que cela utilise le datetime
module au lieu de time
.
>>> import datetime
Ici, nous avons configuré un exemple d'horodatage ts
et un format f
:
>>> ts = '2013-01-12 15:27:43'
>>> f = '%Y-%m-%d %H:%M:%S'
Semblable à ce que vous avez fait ci-dessus, nous utilisons le strptime
fonction (depuis datetime.datetime
) pour convertir notre chaîne en un datetime
objet basé sur le paramètre de formatage :
>>> datetime.datetime.strptime(ts, f)
datetime.datetime(2013, 1, 12, 15, 27, 43)
Maintenant à l'envers - ici nous utilisons datetime.datetime.now()
pour obtenir l'heure actuelle sous forme de datetime
objet :
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2013, 1, 12, 0, 46, 54, 490219)
Dans le datetime
cas, le strftime
la méthode est en fait appelée sur le datetime
objet lui-même, avec le paramètre de formatage en argument :
>>> now.strftime(f)
'2013-01-12 00:46:54'
Dans votre situation, la raison pour laquelle vous obteniez une erreur est que time.time()
renvoie un flottant :
>>> time.time()
1357980846.290231
Mais time.strftime
a besoin d'un time
tuple, similaire à ce que vous aviez ci-dessus. Sans entrer dans la spirale affolante du temps, une fonction telle que time.localtime()
renverra le time
susmentionné tuple et retournera comme prévu :
>>> now = time.localtime()
>>> now
time.struct_time(tm_year=2013, tm_mon=1, tm_mday=12, tm_hour=0, tm_min=55, tm_sec=55, tm_wday=5, tm_yday=12, tm_isdst=0)
>>> f = '%Y-%m-%d %H:%M:%S'
>>> time.strftime(f, now)
'2013-01-12 00:55:55'