>>> a = str(datetime.now())
>>> a
'2012-03-22 11:16:11.343000'
Ich brauche einen String wie diesen: '16:11.34'
.
Sollte so kompakt wie möglich sein.
Oder sollte ich stattdessen time () verwenden? Wie bekomme ich es?
Wie wäre es mit:
datetime.now().strftime('%M:%S.%f')[:-4]
Ich bin mir nicht sicher, was Sie unter "Millisekunden, nur 2 Stellen" verstehen, aber dies sollte auf 2 Dezimalstellen beschränkt bleiben. Es gibt vielleicht eine elegantere Möglichkeit, die Zeichenfolge des Strftime-Formats zu manipulieren, um die Genauigkeit zu verringern - da bin ich mir nicht ganz sicher.
EDIT
Wenn der Modifikator %f
bei Ihnen nicht funktioniert, können Sie Folgendes versuchen:
now=datetime.now()
string_i_want=('%02d:%02d.%d'%(now.minute,now.second,now.microsecond))[:-4]
Auch hier gehe ich davon aus, dass Sie nur die Präzision abschneiden möchten.
Diese Lösung ist der von @ gdw2 sehr ähnlich, nur dass die Formatierung der Zeichenfolge korrekt ausgeführt wird, um dem zu entsprechen, wonach Sie gefragt haben:
>>> import datetime
>>> a = datetime.datetime.now()
>>> "%s:%s.%s" % (a.minute, a.second, str(a.microsecond)[:2])
'31:45.57'
Eine andere ähnliche Lösung:
>>> a=datetime.now()
>>> "%s:%s.%s" % (a.hour, a.minute, a.microsecond)
'14:28.971209'
Ja, ich weiß, dass ich die String-Formatierung nicht perfekt erhalten konnte.
import datetime from datetime
now = datetime.now()
print "%0.2d:%0.2d:%0.2d" % (now.hour, now.minute, now.second)
Sie können dasselbe mit Tag & Monat usw. tun
Tut mir leid, einen alten Thread zu öffnen, aber ich poste nur für den Fall, dass es jemandem hilft. Dies scheint in Python 3 der einfachste Weg zu sein.
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:]
Wenn Sie die Werte als Zahl benötigen, geben Sie sie einfach als Int. Z
Hour = int(str(datetime.now())[11:13])
time.second hilft viel, das an die Spitze Ihres Pythons zu setzen.
wenn Sie möchten, dass Ihre datetime.now()
auf die Minute genau ist, können Sie verwenden
datetime.strptime(datetime.now().strftime('%Y-%m-%d %H:%M'), '%Y-%m-%d %H:%M')
Ähnlich wird es stundenlang sein
datetime.strptime(datetime.now().strftime('%Y-%m-%d %H'), '%Y-%m-%d %H')
Es ist eine Art Hack, wenn jemand eine bessere Lösung hat, bin ich ganz Ohr