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.
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:
Documentazione Python per le stringhe in formato strptime
/strftime
: Python 2, Python 3
strftime.org è anche un ottimo riferimento per strftime
Note:
strptime
= "string parse time"strftime
= "string format time"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
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)