>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'
J'ai besoin d'une chaîne comme celle-ci: '16:11.34'
.
Devrait être aussi compact que possible.
Ou devrais-je utiliser time () à la place? Comment l'obtenir?
Qu'en est-il de:
datetime.now().strftime('%M:%S.%f')[:-4]
Je ne suis pas sûr de comprendre ce que vous entendez par "Millisecondes seulement 2 chiffres", mais cela devrait le garder à 2 décimales. Il peut y avoir un moyen plus élégant de manipuler la chaîne de formatage strftime pour réduire également la précision - je ne suis pas tout à fait sûr.
EDIT
Si le modificateur %f
ne fonctionne pas pour vous, vous pouvez essayer quelque chose comme:
now=datetime.now()
string_i_want=('%02d:%02d.%d'%(now.minute,now.second,now.microsecond))[:-4]
Encore une fois, je suppose que vous voulez simplement tronquer la précision.
Cette solution est très similaire à celle fournie par @ gdw2, sauf que le formatage de la chaîne est correctement effectué pour correspondre à ce que vous avez demandé - "devrait être aussi compact que possible"
>>> import datetime
>>> a = datetime.datetime.now()
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2])
'31:45.57'
Une autre solution similaire:
>>> a=datetime.now()
>>> "%s:%s.%s" % (a.hour, a.minute, a.microsecond)
'14:28.971209'
Oui, je sais que le formatage de la chaîne n’est pas parfait.
import datetime from datetime
now = datetime.now()
print "%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.second)
Vous pouvez faire la même chose avec le jour et le mois, etc.
Désolé d'ouvrir un ancien fil de discussion, mais je poste au cas où cela aiderait quelqu'un. Cela semble être le moyen le plus simple de le faire dans Python 3.
from datetime import datetime
Date = str(datetime.now())[:10]
Hour = str(datetime.now())[11:13]
Minute = str(datetime.now())[14:16]
Second = str(datetime.now())[17:19]
Millisecond = str(datetime.now())[20:]
Si vous avez besoin des valeurs sous forme de nombre, exprimez-les simplement comme un entier, par exemple.
Hour = int(str(datetime.now())[11:13])
time.second aide beaucoup à mettre cela au sommet de votre python.
si vous voulez que votre datetime.now()
soit précis jusqu'à la minute, vous pouvez utiliser
datetime.strptime(datetime.now().strftime('%Y-%m-%d %H:%M'), '%Y-%m-%d %H:%M')
de même pour l'heure, il sera
datetime.strptime(datetime.now().strftime('%Y-%m-%d %H'), '%Y-%m-%d %H')
C'est une sorte de bidouille, si quelqu'un a une meilleure solution, je suis tout ouïe