Convierta la cadena "1 de junio de 2005 1:33 p.m." en fecha y hora

Resuelto Oli asked hace 15 años • 26 respuestas

Tengo una lista enorme de cadenas de fecha y hora como la siguiente

["Jun 1 2005 1:33PM", "Aug 28 1999 12:00AM"]

¿Cómo los convierto en datetimeobjetos?

Oli avatar Jan 22 '09 01:01 Oli
Aceptado

datetime.strptimeanaliza una cadena de entrada en el formato especificado por el usuario en un objeto sin zona horaria : datetime

>>> from datetime import datetime
>>> datetime.strptime('Jun 1 2005  1:33PM', '%b %d %Y %I:%M%p')
datetime.datetime(2005, 6, 1, 13, 33)

Para obtener un dateobjeto usando un datetimeobjeto existente, conviértalo usando .date():

>>> datetime.strptime('Jun 1 2005', '%b %d %Y').date()
date(2005, 6, 1)

Enlaces:

  • strptimedocumentos: Python 2 , Python 3

  • strptime/ strftimeformatear documentos de cadena: Python 2 , Python 3

  • Hoja de referencia de cadenas en formato strftime.org

Notas:

  • strptime= "tiempo de análisis de cadena"
  • strftime= "hora de formato de cadena"
Patrick Harrington avatar Jan 21 '2009 18:01 Patrick Harrington

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 y es más conveniente porque strptimegeneralmente adivina el formato correcto. También es muy útil para escribir pruebas, donde la legibilidad es más importante que el rendimiento.

Instálalo con:

pip install python-dateutil
Simon Willison avatar Jan 22 '2009 18:01 Simon Willison

Consulte strptime en el módulo de tiempo . Es lo inverso de 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)
florin avatar Jan 21 '2009 18:01 florin