Wie konvertiere ich die folgende Zeichenfolge in ein Datetime-Objekt?
"Jun 1 2005 1:33PM"
Wie konvertiere ich die folgende Zeichenfolge in ein Datetime-Objekt?
"Jun 1 2005 1:33PM"
Verwenden Sie die dritte Partei dateutil Bibliothek:
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
Es kann die meisten Datumsformate verarbeiten, auch das, das Sie analysieren müssen. Es ist bequemer als strptime
da es 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
Überprüfen Sie strptime im Zeit Modul. Es ist die Umkehrung von strftime .
$ python
>>> import time
>>> my_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)
timestamp = time.mktime(my_time)
# convert time object to datetime
from datetime import datetime
my_datetime = datetime.fromtimestamp(timestamp)
# convert time object to date
from datetime import date
my_date = date.fromtimestamp(timestamp)
zu konvertieren JJJJ-MM-TT String in ein Datetime-Objekt, datetime.fromisoformat
verwendet werden könnte.
from datetime import datetime
date_string = "2012-12-12 10:10:10"
print (datetime.fromisoformat(date_string))
2012-12-12 10:10:10
Ich habe ein Projekt zusammengestellt, das einige wirklich tolle Ausdrücke konvertieren kann. Ausprobieren Timestring .
pip install timestring
>>> import timestring
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm')
<timestring.Date 2015-08-15 20:40:00 4491909392>
>>> timestring.Date('monday, aug 15th 2015 at 8:40 pm').date
datetime.datetime(2015, 8, 15, 20, 40)
>>> timestring.Range('next week')
<timestring.Range From 03/10/14 00:00:00 to 03/03/14 00:00:00 4496004880>
>>> (timestring.Range('next week').start.date, timestring.Range('next week').end.date)
(datetime.datetime(2014, 3, 10, 0, 0), datetime.datetime(2014, 3, 14, 0, 0))
Wenn Sie sich dies merken, brauchen Sie sich nicht mehr mit der Datumsumwandlung zu befassen.
String zu Datetime-Objekt = strptime
datetime-Objekt in andere Formate umwandeln = strftime
Jun 1 2005 1:33PM
ist gleichbedeutend mit
%b %d %Y %I:%M%p
%b Monat als abgekürzter Name des Gebietsschemas (Jun)
%d Tag des Monats als mit Nullen aufgefüllte Dezimalzahl(1)
%Y Jahr mit Jahrhundert als Dezimalzahl (2015)
%I Stunde (12-Stunden-Uhr) als mit Nullen aufgefüllte Dezimalzahl(01)
%M Minute als mit Nullen aufgefüllte Dezimalzahl(33)
%p Lokale Entsprechung von AM oder PM(PM)
Sie brauchen also strptime, d.h. eine Konvertierung string
a
>>> dates = []
>>> dates.append('Jun 1 2005 1:33PM')
>>> dates.append('Aug 28 1999 12:00AM')
>>> from datetime import datetime
>>> for d in dates:
... date = datetime.strptime(d, '%b %d %Y %I:%M%p')
... print type(date)
... print date
...
Ausgabe
<type 'datetime.datetime'>
2005-06-01 13:33:00
<type 'datetime.datetime'>
1999-08-28 00:00:00
Wenn Sie andere Datumsformate haben, können Sie panda oder dateutil.parse verwenden.
>>> import dateutil
>>> dates = []
>>> dates.append('12 1 2017')
>>> dates.append('1 1 2017')
>>> dates.append('1 12 2017')
>>> dates.append('June 1 2017 1:30:00AM')
>>> [parser.parse(x) for x in dates]
OutPut
[datetime.datetime(2017, 12, 1, 0, 0), datetime.datetime(2017, 1, 1, 0, 0), datetime.datetime(2017, 1, 12, 0, 0), datetime.datetime(2017, 6, 1, 1, 30)]
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.