it-swarm.com.de

Wie bekomme ich min, Sekunden und Millisekunden von datetime.now () in Python?

>>> 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?

14
Prostak

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.

26
mgilson

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'
5
Pythomania

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.

1
gdw2
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 

1
B.Welboren

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])
0
Adam Morris

time.second hilft viel, das an die Spitze Ihres Pythons zu setzen.

0
timothy timer

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

0