Convierta la cadena "1 de junio de 2005 1:33 p.m." en fecha y hora
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 datetime
objetos?
datetime.strptime
analiza 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 date
objeto usando un datetime
objeto existente, conviértalo usando .date()
:
>>> datetime.strptime('Jun 1 2005', '%b %d %Y').date()
date(2005, 6, 1)
Enlaces:
strptime
documentos: Python 2 , Python 3strptime
/strftime
formatear documentos de cadena: Python 2 , Python 3Hoja de referencia de cadenas en formato strftime.org
Notas:
strptime
= "tiempo de análisis de cadena"strftime
= "hora 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 y es más conveniente porque strptime
generalmente 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
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)