Conversione di stringhe in datetime

Ho una lista enorme di date-ora come questa come stringhe:

Jun 1 2005  1:33PM
Aug 28 1999 12:00AM

Ho intenzione di spingerli indietro in veri campi datetime in un database, quindi ho bisogno di trasformarli in veri oggetti datetime.

Questo sta passando attraverso l'ORM di Django, quindi non posso usare SQL per fare la conversione all'inserimento.

Soluzione

datetime.strptime è la routine principale per analizzare le stringhe in datetime. Può gestire tutti i tipi di formati, con il formato determinato da una stringa di formato che gli dai:

from datetime import datetime

datetime_object = datetime.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')

L'oggetto datetime risultante è indipendente dal fuso orario.

Collegamenti:

Note:

  • strptime = "string parse time"
  • strftime = "string format time"
  • Pronuncialo ad alta voce oggi & non dovrai più cercarlo tra 6 mesi.
Commentari (14)

Utilizzare la libreria di terze parti dateutil:

from dateutil import parser
parser.parse("Aug 28 1999 12:00AM")  # datetime.datetime(1999, 8, 28, 0, 0)

Può gestire la maggior parte dei formati di data, incluso quello che devi analizzare. È più conveniente di strptime perché può indovinare il formato corretto la maggior parte delle volte.

È molto utile per scrivere test, dove la leggibilità è più importante delle prestazioni.

Si può installare con:

pip install python-dateutil
Commentari (8)

Controllate strptime nel modulo time. È l'inverso di 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)
Commentari (6)