Tengo una lista enorme de fechas como cadenas:
Jun 1 2005 1:33PM
Aug 28 1999 12:00AM
Voy a meterlas en campos de fecha y hora en una base de datos, así que necesito convertirlas en objetos de fecha y hora reales.
Esto va a través de Django's ORM así que no puedo usar SQL para hacer la conversión en la inserción.
datetime.strptime
es la rutina principal para convertir cadenas en fechas. Puede manejar todo tipo de formatos, con el formato determinado por una cadena de formato que le das:
from datetime import datetime
datetime_object = datetime.strptime('Jun 1 2005 1:33PM', '%b %d %Y %I:%M%p')
El objeto datetime
resultante es independiente de la zona horaria.
Enlaces:
Documentación de Python para el formato de cadenas strptime
/strftime
: Python 2, Python 3
Strftime.org]5 es también una buena referencia para strftime
Notas:
strptime
= "tiempo de parseo de la cadena"strftime
= "tiempo de formato de cadena"Utilice la biblioteca de terceros dateutil:
from dateutil import parser
parser.parse("Aug 28 1999 12:00AM") # datetime.datetime(1999, 8, 28, 0, 0)
Puede manejar la mayoría de los formatos de fecha, incluyendo el que necesitas analizar. Es más conveniente que strptime
ya que puede adivinar el formato correcto la mayoría de las veces.
Es muy útil para escribir pruebas, donde la legibilidad es más importante que el rendimiento.
Puedes instalarlo con:
pip install python-dateutil
Comprueba strptime en el módulo time. Es la inversa de 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)