¿Cómo funciona strptime() en Python?

Python strptime()

los strptime() El método crea un objeto de fecha y hora a partir de la cadena dada.

Nota: no puedes crear datetime objeto de cada cadena. La cadena debe estar en un formato determinado.


Ejemplo 1: cadena a objeto de fecha y hora


from datetime import datetime

date_string = "21 June, 2018"

print("date_string =", date_string)
print("type of date_string =", type(date_string))

date_object = datetime.strptime(date_string, "%d %B, %Y")

print("date_object =", date_object)
print("type of date_object =", type(date_object))

Cuando ejecute el programa, la salida será:


date_string = 21 June, 2018
type of date_string = <class 'str'>
date_object = 2018-06-21 00:00:00
type of date_object = <class 'datetime.datetime'>

¿Cómo funciona strptime()?

los strptime() El método de clase toma dos argumentos:

  • cadena (que se convierte a fecha y hora)
  • código de formato

Según la cadena y el código de formato utilizado, el método devuelve su equivalente datetime objeto.

En el ejemplo anterior:

Aquí,

  • %d – Representa el día del mes. Ejemplo: 01, 02, …, 31
  • %B – Nombre del mes completo. Ejemplo: enero, febrero, etc.
  • %Y – Año en cuatro dígitos. Ejemplo: 2018, 2019, etc

Ejemplo 2: cadena a objeto de fecha y hora


from datetime import datetime

dt_string = "12/11/2018 09:15:32"

# Considering date is in dd/mm/yyyy format
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# Considering date is in mm/dd/yyyy format
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

Cuando ejecute el programa, la salida será:

dt_object1 = 2018-11-12 09:15:32
dt_object2 = 2018-12-11 09:15:32

Lista de códigos de formato

La siguiente tabla muestra todos los códigos de formato que puede utilizar.

DirectivaSentidoEjemplo
%aNombre abreviado del día de la semana.dom, lun,…
%ANombre completo del día de la semana.Domingo Lunes, …
%wDía de la semana como un número decimal.0, 1, …, 6
%dDía del mes como decimal con ceros.01, 02, …, 31
%-dDía del mes como número decimal.1, 2, …, 30
%bNombre del mes abreviado.ene, feb, …, dic
%BNombre del mes completo.Enero febrero, …
%mMes como un número decimal con ceros.01, 02, …, 12
%-mMes como un número decimal.1, 2, …, 12
%yAño sin siglo como un número decimal con ceros.00, 01, …, 99
%-yAño sin siglo como número decimal.0, 1, …, 99
%YAño con siglo como número decimal.2013, 2019, etc
%HHora (reloj de 24 horas) como un número decimal con ceros.00, 01, …, 23
%-HHora (reloj de 24 horas) como un número decimal.0, 1, …, 23
%IHora (reloj de 12 horas) como un número decimal con ceros.01, 02, …, 12
%-IHora (reloj de 12 horas) como un número decimal.1, 2, … 12
%pAM o PM de la localidad.AM PM
%MMinuto como un número decimal con ceros.00, 01, …, 59
%-MMinuto como un número decimal.0, 1, …, 59
%SSegundo como un número decimal con ceros.00, 01, …, 59
%-SSegundo como un número decimal.0, 1, …, 59
%fMicrosegundo como número decimal, con ceros a la izquierda.000000 – 999999
%zDesplazamiento UTC en la forma +HHMM o -HHMM.
%ZNombre de la zona horaria.
%jDía del año como un número decimal con ceros.001, 002, …, 366
%-jDía del año como número decimal.1, 2, …, 366
%UNúmero de semana del año (domingo como primer día de la semana). Todos los días de un nuevo año que preceden al primer domingo se consideran en la semana 0.00, 01, …, 53
%WNúmero de semana del año (lunes como primer día de la semana). Todos los días de un nuevo año que preceden al primer lunes se consideran en la semana 0.00, 01, …, 53
%cRepresentación de fecha y hora adecuada de la configuración regional.lun 30 sep 07:06:05 2013
%xRepresentación de fecha adecuada de la configuración regional.30/09/13
%XRepresentación de tiempo adecuada de la configuración regional.07:06:05
%%Un carácter ‘%’ literal.%

ValueError en strptime()

Si la cadena (primer argumento) y el código de formato (segundo argumento) se pasan al strptime() no coincide, obtendrá ValueError. Por ejemplo:


from datetime import datetime

date_string = "12/11/2018"
date_object = datetime.strptime(date_string, "%d %m %Y")

print("date_object =", date_object)

Si ejecuta este programa, obtendrá un error.

ValueError: time data '12/11/2018' does not match format '%d %m %Y'

Lecturas recomendadas: Python strftime()

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *