Aprende a manejar fechas y horas en Python: guía completa para principiantes

curso de Python

Fechas y horas con Python – 100 días de Python #31

Hacemos un pequeño descanso del proyecto de bases de datos que estamos realizando para ver una introducción al manejo de fechas y horas con Python, un tema que te será seguro de gran utilidad en el futuro, para poder realizar muchas cosas.

El módulo datetime de Python

Python tiene prácticamente de todo, algo que por supuesto no le falta, es un módulo dedicado al manejo de fechas y horas. Se trata de «datetime».

Es un módulo muy extenso, así que nos vamos a centrar en las partes más importantes, las clases time, date y datetime.

Importar el módulo datetime de Python

El módulo datetime de Python, ya viene integrado en el lenguaje, de forma que para importarlo, no hay que instalar nada. Solo hacer el import.

import datetime

La clase time de datetime

Empecemos por la clase «time». Esta clase está enfocada al manejo de horas en Python. Al ser una clase, ya te aviso, que para crear datos de este tipo, estaremos creando objetos de tiempo (de tipo time).

Crear un objeto time

Para crear un objeto de tipo time, lo haremos especificando una serie de argumentos. No es obligatorio poner ninguno como en este ejemplo.

import datetime

#Se crea un objeto de tipo time
hora = datetime.time()

#Se imprime la hora almacenada
print(hora)

Nos da una hora por defecto, todo ceros.

Resultado en la consola

00:00:00

Si queremos almacenar una hora en concreto, podemos poner argumentos. El primero corresponde a la hora, el segundo a los minutos, el tercero a los segundos y el cuarto a los microsegundos (un microsegundo equivale a una millonésima parte de un segundo).

import datetime

hora = datetime.time(14,30,20,7577)

print(hora)

Resultado en la consola

14:30:20.007577

No obstante, lo más habitual es utilizar solo los 3 primeros.

import datetime

hora = datetime.time(14,30,20)

print(hora)

Resultado en la consola

14:30:20

Acceder a los elementos de time por separado

Una de las funcionalidades que tiene este tipo de objeto, es que puedes usar atributos dedicados a devolverte solo una de las partes de la hora.

import datetime

hora = datetime.time(14,30,20,656)

print(hora.hour)
print(hora.minute)
print(hora.second)
print(hora.microsecond)

Resultado en la consola

14
30
20
656

Clase date del módulo datetime de Python

Ahora que ya sabes lo más básico con las horas de Python, es el momento de ver las fechas. Para trabajar con fechas, necesitaremos objetos de tipo «date».

A este objeto, le pasaremos como primer argumento, el año. Como segundo el mes y como tercero el día del mes.

import datetime

fecha = datetime.date(2027,12,20)

print(fecha)

Resultado en la consola

2027-12-20

Si quieres trabajar con la fecha en elementos separados, puedes usar atributos para hacer referencia a cada valor.

import datetime

fecha = datetime.date(2027,12,20)

print(fecha.year)
print(fecha.month)
print(fecha.day)

Resultado en la consola

2027
12
20

Obtener la fecha actual con Python

La forma más fácil de obtener la fecha es que mires en la barra de tareas y ahí te la indica. Perdón jajaja, hoy estoy un poco payaso.

Con Python, puedes obtener la fecha actual en el momento de ejecutar el programa con el método «today» de la clase «date» del módulo datetime.

import datetime

fecha_hoy = datetime.date.today()

print(fecha_hoy)

Resultado en la consola

2022-12-20

Obtener la hora actual en Python

Veamos de que forma obtener la hora actual con Python.

Para hacer esto, necesitamos utilizar el método now() de la clase datetime del módulo datetime:

import datetime

hora_actual = datetime.datetime.now()

print(hora_actual)

Resultado en la consola

2022-12-20 16:48:26.396251

De esta fecha y hora en conjunto, puedes extraer los atributos que necesites. Por ejemplo, quieres solo la hora, utiliza «hour» como he mostrado más arriba. ¿Quieres el día? Pues usa «day».

También tenemos una serie de códigos de formateo de fechas, con los que podemos obtener en un string, las partes que nos interesan.

CódigoSignificadoEjemplo de uso
%aNombre abreviado del día de la semana.Fry, Sat
%ADía entero de la semana.Fryday, Saturday
%wDía de la semana (numérico) 0 – domingo.0, 1, 2, 3, 4, 5, 6
%dDía del mes con el prefijo 0 (solo del 01 al 09, el resto es 10, 11, 12…).01, 02, 03 … 10, 11, 12…
%b Nombre del mes abreviado.Dec, Jan, Feb
%mMes del año (numérico) con el prefijo 0 hasta el mes 09.01, 02, 03 … 10, 11, 12
%B Nombre del mes entero.December, January, …
%yNúmero del año abreviado a dos dígitos.00, 01, 02, … 98, 99
%YNúmero del año completo.2021, 2022, 2023 …
%HHora de 01 a 24.01, 02, 03 … 23, 24
%IHora de 01 a 12.01, 02, 03, … 10, 11, 12
%pAM – PMAM, PM
%MMinutos con el prefijo 0 del 00 al 09.00, 01, 02, … 58, 59
%SSegundos con el prefijo 0 del 00 al 09.00, 01, 02, … 58, 59
%fMicrosegundos con ceros a la izquierda.000000, 999999
%zCompensación UTC en la forma HHMM o -HHMM (hay que utilizar un argumento especial para que aparezca: tzinfo=datetime.timezone.utc). +0000
%ZNombre de la zona horaria (hay que utilizar un argumento especial para que aparezca: tzinfo=datetime.timezone.utc).  UTC
%jNúmero del día del año con ceros a la izquierda.001, 365
%UNúmero de semana del año (empezando por el domingo)00, 01, 02, … 51, 52 …
%WNúmero de semana del año00, 01, 02, … 51, 52
%cRepresentación larga de fecha y hora apropiada de la localidadSat Dec 24 09:26:53 2022
%xRepresentación numérica corta de fecha apropiada de la localidad12/24/22
%XRepresentación de hora apropiada de la localidad10:03:43

Cambiar las fechas de Python a español

Las fechas en inglés que vienen por defecto con Python, están muy bien, pero si estamos desarrollando algo en español, lo más normal, sería que las fechas aparecieran formateadas en español. De modo, que pasemos a ver una forma de traducirlas.

El módulo locale de Python

Importamos el módulo locale de Python.

import locale

¿Para qué sirve el módulo locale de Python?

El módulo «locale» de Python es un módulo que permite a las aplicaciones Python adaptar su comportamiento y presentación a la configuración regional y de idioma del sistema. Esto incluye la representación de fechas, números, monedas, codificación de caracteres, etc.

De momento, lo vamos a utilizar solo para establecer el idioma a español.

# Establece el idioma a español
locale.setlocale(locale.LC_ALL, "es")

Esto mismo, lo puedes precisar más con el español de tu país, por ejemplo, si escribo una aplicación para España, le puedo poner esto:

# Establece el idioma a español
locale.setlocale(locale.LC_ALL, "es_ES")

Para México:

# Establece el idioma a español
locale.setlocale(locale.LC_ALL, "es_MX")

Así con cualquier código de país.

No obstante, la parte importante es la de «es» (español) en minúscula, ya que dudo que haya grandes variaciones o alguna entre los diferentes países hispanohablantes.

El ejemplo completo quedará así. Primero cambiamos el idioma y luego, ya podemos formatear las fechas a nuestro gusto, ya que vendrán en español.

import datetime
import locale

# Establece el idioma a español
locale.setlocale(locale.LC_ALL, "es")

# Crea un objeto datetime con la fecha y hora actual
fecha_ahora = datetime.datetime.now()

# Usa la función strftime para formatear la fecha y hora como una cadena
fecha_formateada = fecha_ahora.strftime("%A, %d de %B de %Y a las %H:%M")

print(fecha_formateada)

Resultado en la consola

sábado, 24 de diciembre de 2022 a las 09:33

Aún nos quedan muchas cosas por ver con las fechas y el tiempo. Por el momento, ya es suficiente para que continúes con el proyecto de bases de datos de los capítulos anteriores.

No te pierdas nada de todo el contenido que tengo sobre Python.

Ejercicios de Python con horas y fechas

  1. Muestra la hora actual en formato hh:mm:ss.
  2. Muestra la fecha actual en formato dd/mm/yyyy.
  3. Crea una variable con una fecha y hora específicas (por ejemplo, 21 de diciembre de 2023 a las 13:45) y muestra solo la hora y los minutos.
  4. Crea una variable con una fecha y hora específicas (por ejemplo, 10 de noviembre de 2023 a las 13:45) y muestra solo el día y el mes.
  5. Obtén la fecha actual y formatéala para mostrar el mes en formato de tres letras (por ejemplo, «ene» para enero).
  6. Obtén la fecha actual y formatéala para mostrar el día de la semana en formato de tres letras (por ejemplo, «lun» para lunes).
  7. Crea una variable con una fecha y hora específicas (por ejemplo, 15 de septiembre de 2023 a las 13:45) y muestra la fecha y hora en formato «día de mes de año, hora:minutos».
  8. Obtén la fecha actual y formatéala para mostrar el mes en formato de dos dígitos (por ejemplo, «01» para enero).

Las soluciones a estos ejercicios las verás en el siguiente capítulo.

Aprende a manejar fechas y horas en Python: guía completa para principiantes

Un comentario en «Aprende a manejar fechas y horas en Python: guía completa para principiantes»

Deja una respuesta

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

Scroll hacia arriba