Ich möchte eine datetime
Zeichenfolge vom Datum mit Millisekunden haben. Dieser Code ist typisch für mich und ich bin gespannt darauf, wie man ihn verkürzt.
from datetime import datetime
timeformatted= str(datetime.utcnow())
semiformatted= timeformatted.replace("-","")
almostformatted= semiformatted.replace(":","")
formatted=almostformatted.replace(".","")
withspacegoaway=formatted.replace(" ","")
formattedstripped=withspacegoaway.strip()
print formattedstripped
python
datetime
string-formatting
Jurudocs
quelle
quelle
Instant.parse
Repräsentation analysieren, die mitstrftime('%Y-%m-%dT%H:%M:%S.%fZ')
Antworten:
Verwenden Sie Folgendes, um eine Datumszeichenfolge mit Millisekunden (3 Dezimalstellen hinter Sekunden) zu erhalten:
Hinweis: Für Python3
print
sind Klammern erforderlich:quelle
2013-08-23 10:18:32.926
ist die Ausgabe vonprint datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
.import datetime
anstelle von verwenden möchtenfrom datetime import datetime
, müssen Sie dies verwenden:datetime.datetime.utcnow().strftime("%H:%M:%S.%f")
Mit Python 3.6 können Sie Folgendes verwenden:
Ausgabe:
Weitere Informationen finden Sie hier: https://docs.python.org/3/library/datetime.html#datetime.datetime.isoformat
quelle
http://docs.python.org/library/datetime.html#strftime-strptime-behavior
quelle
[:-3]
am Ende hinzu, um die letzten 3 Ziffern zu löschen, sodass nur Millisekunden angezeigt werden.@Cabbi hat das Problem angesprochen, dass auf einigen Systemen das Mikrosekundenformat auftreten
%f
kann. Daher ist"0"
es nicht portabel, die letzten drei Zeichen einfach abzuschneiden.Der folgende Code formatiert einen Zeitstempel sorgfältig mit Millisekunden:
Beispielausgabe:
Um die genaue Ausgabe zu erhalten, die das OP wollte, müssen wir Interpunktionszeichen entfernen:
Beispielausgabe:
quelle
Wahrscheinlich so:
quelle
%m
muss eine sein%M
, denn es sind Minuten, keine Monate.Ich nehme an, Sie meinen, Sie suchen nach etwas, das schneller als datetime.datetime.strftime () ist, und entfernen im Wesentlichen die Nicht-Alpha-Zeichen von einem utc-Zeitstempel.
Ihr Ansatz ist geringfügig schneller, und ich denke, Sie können die Dinge noch schneller machen, indem Sie die Schnur durchschneiden:
quelle
Ergebnis
Die Verwendung von translate () und der gleichzeitig ausgeführten Slicing- Methode
translate () bietet den Vorteil, dass sie in einer Zeile verwendet werden können
Vergleich der Zeiten anhand der ersten:
quelle
Ich habe mich mit dem gleichen Problem befasst, aber in meinem Fall war es wichtig, dass die Millisekunde gerundet und nicht abgeschnitten wurde
quelle
quelle
quelle
quelle
Das Problem mit
datetime.utcnow()
und anderen solchen Lösungen ist, dass sie langsam sind.Eine effizientere Lösung könnte folgendermaßen aussehen:
Wo
prec
wäre3
in Ihrem Fall (Millisekunden).Die Funktion arbeitet mit bis zu 9 Dezimalstellen (bitte Nummer
9
in der 2. Formatierungszeichenfolge notieren ).Wenn Sie den Bruchteil runden möchten, würde ich vorschlagen,
"%.9f"
dynamisch mit der gewünschten Anzahl von Dezimalstellen zu erstellen.quelle