2921 Stimmen

Konvertierung von String in Datetime

Wie konvertiere ich die folgende Zeichenfolge in ein Datetime-Objekt?

"Jun 1 2005  1:33PM"

10voto

Bilesh Ganguly Punkte 3265

Sie können sich auch informieren über dateparser

dateparser bietet Module zum einfachen Parsen lokalisierter Daten in fast String-Formaten zu analysieren, die häufig auf Webseiten zu finden sind.

Installieren:

$ pip install dateparser

Dies ist meines Erachtens die einfachste Methode, um Daten zu analysieren.

Der einfachste Weg ist die Verwendung der dateparser.parse Funktion, die den größten Teil der Funktionalität des Moduls umschließt.

Beispiel-Code:

import dateparser

t1 = 'Jun 1 2005  1:33PM'
t2 = 'Aug 28 1999 12:00AM'

dt1 = dateparser.parse(t1)
dt2 = dateparser.parse(t2)

print(dt1)
print(dt2)

Ausgabe:

2005-06-01 13:33:00
1999-08-28 00:00:00

7voto

Raphael Amoedo Punkte 3735

Sie können verwenden einfach_datieren um es einfach zu machen:

import date_converter
converted_date = date_converter.string_to_datetime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')

5voto

Grant Shannon Punkte 3862

Ähnlich wie Javed oben, ich wollte nur Datum von String - so kombiniert Simon und Javed's Logik (oben) erhalten wir:

from dateutil import parser
import datetime

s='2021-03-04'

parser.parse(s).date()

Ausgabe

datetime.date(2021, 3, 4)

5voto

Javed Punkte 1464

Wenn Sie nur das Datumsformat wünschen, können Sie es manuell konvertieren, indem Sie die einzelnen Felder wie folgt übergeben:

>>> import datetime
>>> date = datetime.date(int('2017'),int('12'),int('21'))
>>> date
datetime.date(2017, 12, 21)
>>> type(date)
<type 'datetime.date'>

Sie können Ihre Split-String-Werte übergeben, um sie in den Datumstyp zu konvertieren:

selected_month_rec = '2017-09-01'
date_formate = datetime.date(int(selected_month_rec.split('-')[0]),int(selected_month_rec.split('-')[1]),int(selected_month_rec.split('-')[2]))

Sie erhalten den Ergebniswert im Datumsformat.

4voto

Grzegorz Punkte 813

Es scheint, dass die Verwendung von pandas Zeitstempel ist die schnellste

import pandas as pd 

N = 1000

l = ['Jun 1 2005  1:33PM'] * N

list(pd.to_datetime(l, format=format))

%timeit _ = list(pd.to_datetime(l, format=format))
1.58 ms ± 21.6 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)

Andere Lösungen

from datetime import datetime
%timeit _ = list(map(lambda x: datetime.strptime(x, format), l))
9.41 ms ± 95.7 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

from dateutil.parser import parse
%timeit _ = list(map(lambda x: parse(x), l))
73.8 ms ± 1.14 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

Wenn es sich um eine ISO8601-Zeichenkette handelt, verwenden Sie bitte csio8601

import ciso8601

l = ['2014-01-09'] * N

%timeit _ = list(map(lambda x: ciso8601.parse_datetime(x), l))
186 µs ± 4.13 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)

CodeJaeger.com

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.

Powered by:

X