Ich habe eine riesige Liste solcher Datumszeiten als Zeichenketten:
Jun 1 2005 1:33PM
Aug 28 1999 12:00AM
I'm going to be shoving diese zurück in richtige datetime Felder in einer Datenbank, so muss ich sie in echte datetime Objekte Magie.
Dies geht durch Django & #39; s ORM, so dass ich nicht SQL verwenden, um die Konvertierung auf Insert zu tun.
datetime.strptime" ist die Hauptroutine zum Parsen von Strings in Datumsangaben. Sie kann alle Arten von Formaten verarbeiten, wobei das Format durch einen Format-String bestimmt wird, den Sie ihr geben:
from datetime import datetime
datetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
Das resultierende datetime
-Objekt ist zeitzonennaiv.
Links:
Python-Dokumentation für Zeichenketten im Format strptime
/strftime
: Python 2, Python 3
strftime.org ist auch eine sehr gute Referenz für strftime
Anmerkungen:
strptime
= "string parse time"strftime
= "string format time"Verwenden Sie die Drittanbieter-Bibliothek dateutil:
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
Sie kann mit den meisten Datumsformaten umgehen, einschließlich des Formats, das Sie analysieren müssen. Sie ist bequemer als strptime
, da sie in den meisten Fällen das richtige Format erraten kann.
Es ist sehr nützlich für das Schreiben von Tests, bei denen die Lesbarkeit wichtiger ist als die Leistung.
Sie können es mit installieren:
pip install python-dateutil
Sehen Sie sich strptime im Modul time an. Es ist die Umkehrung von strftime.
$ python
>>> import time
>>> time.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
time.struct_time(tm_year=2005, tm_mon=6, tm_mday=1,
tm_hour=13, tm_min=33, tm_sec=0,
tm_wday=2, tm_yday=152, tm_isdst=-1)