Python datetime: cómo trabajar con fecha y hora en Python

El módulo datetime de Python facilita el trabajo con fechas y horas. Puedes mostrar fechas en distintos formatos y crear objetos de fecha con solo unas líneas de código.

El módulo datetime de un vistazo

Python datetime es un módulo de Python que deberías conocer, tanto si acabas de leer tu primer tutorial de Python como si llevas mucho tiempo trabajando con el lenguaje de programación de Internet. Puedes pensar que los módulos son similares a una biblioteca de código en otros lenguajes de programación. Al importar el módulo datetime, amplías Python con funciones para el tratamiento de la fecha y la hora. Para ello, se utilizan objetos de fecha específicos dentro del módulo, que puedes crear fácilmente en tu código.

Consejo

¿Utilizas Python en tu proyecto web? Con Deploy Now puedes desplegar fácilmente los cambios de código en cualquier momento a través de GitHub y seguir en directo el estado actual de tu proyecto.

Python datetime: fecha y hora

Puedes utilizar Python datetime, por ejemplo, para almacenar una fecha y una hora en un objeto distinto. Para ello, necesitas el constructor datetime de Python, cuya sintaxis es la siguiente:

import datetime as dt
dt.datetime(year, month, day, hour, minute, second, microsecond, timezone)
python

Los parámetros que toma la función representan la fecha y la hora actuales. Los parámetros que especifican el tiempo son opcionales. En ellos, el valor por defecto es siempre 0 (lo mismo ocurre con el parámetro que especifica la zona horaria, que también se establece en 0 por defecto). La función datetime devuelve un objeto de fecha y hora.

Python date: fecha

De forma análoga al constructor datetime, también existe el constructor Python date con el que se puede crear un objeto fecha; sin embargo, no muestra la hora. Sintácticamente, el constructor date es similar a su homólogo datetime:

import datetime as dt
dt.date(year, month, day)
python

Los parámetros que toma el constructor de fecha de Python son el año, el mes y el día. El resultado de la llamada a la función es un objeto fecha.

Recuperar la fecha actual: cómo se hace

Si no quieres guardar ningún dato concreto, sino la fecha y hora actuales, tienes a tu disposición las funciones predefinidas. Dependiendo de si solo te interesa la fecha actual o la fecha y hora actuales, deberás utilizar una función diferente.

Cómo usar la fecha actual

Si solo te interesa la fecha compuesta por año, mes y día, puedes utilizar una función de la clase Python date llamada “today”. La llamada a la función es sencilla:

import datetime as dt
current_date = dt.date.today()
python

Para llamar a la función today, primero tienes que especificar el módulo datetime, que se proporciona con el alias dt en el ejemplo anterior. A continuación, utiliza la notación punto para acceder a la fecha de clase, que a su vez especifica la función today. Después de ejecutar el código anterior, hay un objeto fecha con la fecha actual en la variable llamada date.today.

Procedimiento para la fecha y hora actuales

Si además necesitas la hora actual, te ayudará una función de la clase datetime: now. Con una llamada a now, obtienes un objeto Python datetime que contiene la fecha y la hora actuales, con una precisión de milisegundos.

import datetime as dt
current_date_and_time = dt.datetime.now()
python

La llamada es similar a la llamada de la función today, pero dentro de la clase datetime. Tras la llamada a la función, se almacena un objeto datetime en la variable “current_date_and_time”, que contiene la fecha y hora actuales.

Consejo

Si solo te interesan valores individuales de un objeto, como el día, puedes utilizar la notación punto para acceder exactamente a ese valor. Con “current_date.day”, por ejemplo, accederás al día actual.

Formatear datos en Python

Para las aplicaciones en las que quieras dar salida a la fecha, necesitas formatear las fechas u objetos de fecha de forma que cumplan el propósito de tu aplicación. El módulo datetime de Python también proporciona una función adecuada para este fin llamada strftime.

La sintaxis de la función es la siguiente:

import datetime as dt
current_date = dt.date.today()
current_date.strftime(format)
python

La función se invoca directamente sobre un objeto fecha o fecha-hora y toma un formato específico como parámetro. Debes especificar este formato como un string de Python, es decir, entre comillas. Python admite varios formatos diferentes, cuyas abreviaturas se indican en la tabla siguiente:

Abreviatura Descripción Ejemplo
%a Día de la semana, abreviado Sat
%A Día de la semana, completo Saturday
%w Día de la semana como número 6
%u ISO 8601 Día laborable 6
%j Número del día actual (en relación a todo el año) 365
%b Nombre del mes, abreviado Dec
%B Nombre del mes, completo December
%m Mes como número 12
%U Número de la semana, empezando por el domingo como primer día de la semana 50
%W Número de la semana, empezando por el lunes como primer día de la semana 50
%y Año, abreviado 22
%Y Año, completo 2022
%H Hora (0-23) 22
%I Hora (0-12) 11
%p AM o PM AM
%M Minuto 59
%S Segundo 37
%f Microsegundo 567213
%z Desplazamiento UTC +0100
%Z Huso horario CST