Formatear fechas y horas en Python con datetime: guía completa

Formatear fechas y horas en Python con datetime: guía completa

El módulo datetime de Python es una herramienta fundamental para trabajar con fechas y horas en tus programas. Ofrece una amplia gama de funcionalidades, incluyendo la capacidad de crear objetos de fecha y hora, realizar operaciones aritméticas con ellos y, crucialmente, formatearlos de acuerdo a diferentes estándares. En este artículo, exploraremos en profundidad cómo utilizar datetime para formatear fechas y horas de manera eficiente y personalizada.

Entender cómo formatear fechas y horas es esencial para mostrar información de manera legible para el usuario, almacenar datos en formatos específicos o realizar análisis de datos que dependan de la información temporal.

Introducción al módulo datetime

Antes de adentrarnos en el formato, vamos a comprender los elementos básicos del módulo datetime. El módulo datetime proporciona tres tipos principales de objetos:

  • date: Representa una fecha, incluyendo el año, mes y día.
  • time: Representa un tiempo, incluyendo la hora, minuto, segundo y microsegundo.
  • datetime: Combina ambos, incluyendo fecha y hora.

Para trabajar con datetime, primero debemos importarlo en nuestro script:

python
import datetime

Formateando fechas y horas con strftime

La función strftime() es la herramienta central para formatear objetos de fecha y hora en Python. Esta función recibe un objeto datetime y un código de formato como argumentos. El código de formato es una cadena de caracteres especiales que define cómo se mostrará la fecha y la hora.

Veamos algunos ejemplos:

  • Mostrar la fecha actual en formato DD/MM/AAAA:

«`python
import datetime

fechaactual = datetime.datetime.now()
formato = «%d/%m/%Y»
fecha
formateada = fechaactual.strftime(formato)
print(fecha
formateada)
«`

  • Mostrar la hora actual en formato HH:MM:SS:

«`python
import datetime

LEER:  Propiedades CSS Básicas: Guía Completa para Estilizar tu Web

horaactual = datetime.datetime.now()
formato = «%H:%M:%S»
hora
formateada = horaactual.strftime(formato)
print(hora
formateada)
«`

  • Mostrar la fecha y hora actual en formato personalizado:

«`python
import datetime

fechahoraactual = datetime.datetime.now()
formato = «%A %d de %B de %Y, %H:%M:%S»
fechahoraformateada = fechahoraactual.strftime(formato)
print(fechahoraformateada)
«`

Códigos de formato para strftime

A continuación, se presenta una tabla con los códigos de formato más comunes utilizados en strftime():

| Código | Descripción | Ejemplo |
|—|—|—|
| %Y | Año con cuatro dígitos | 2023 |
| %y | Año con dos dígitos | 23 |
| %m | Mes como número (01-12) | 01 |
| %B | Mes como nombre completo | Enero |
| %b | Mes como nombre abreviado | Ene |
| %d | Día del mes (01-31) | 15 |
| %H | Hora en formato 24 horas (00-23) | 18 |
| %I | Hora en formato 12 horas (01-12) | 06 |
| %p | AM o PM | AM |
| %M | Minuto (00-59) | 30 |
| %S | Segundo (00-59) | 45 |
| %f | Microsegundo (000000-999999) | 123456 |
| %a | Día de la semana abreviado | Lun |
| %A | Día de la semana completo | Lunes |
| %w | Día de la semana como número (0-6, 0 es domingo) | 1 |
| %Z | Zona horaria | CET |
| %j | Día del año (001-366) | 015 |

Creando objetos datetime personalizados

Además de obtener la fecha y hora actual, puedes crear objetos datetime personalizados para representar fechas y horas específicas. Para ello, usa la función datetime.datetime().

  • Crear un objeto datetime con fecha y hora:

«`python
import datetime

fechahora = datetime.datetime(2023, 10, 27, 15, 30, 0)
print(fecha
hora)
«`

  • Crear un objeto date con una fecha específica:

«`python
import datetime

fecha = datetime.date(2023, 10, 27)
print(fecha)
«`

  • Crear un objeto time con una hora específica:

«`python
import datetime

hora = datetime.time(15, 30, 0)
print(hora)
«`

LEER:  Incrustar Video HTML: Guía Completa para Integrar Vídeos en tu Web

Operaciones con fechas y horas

Una vez que tengas objetos datetime, puedes realizar operaciones como sumar o restar días, meses, años, etc.

  • Sumar días a una fecha:

«`python
import datetime

fecha = datetime.date(2023, 10, 27)
nuevafecha = fecha + datetime.timedelta(days=5)
print(nueva
fecha)
«`

  • Restar días a una fecha:

«`python
import datetime

fecha = datetime.date(2023, 10, 27)
nuevafecha = fecha – datetime.timedelta(days=5)
print(nueva
fecha)
«`

  • Calcular la diferencia entre dos fechas:

«`python
import datetime

fecha1 = datetime.date(2023, 10, 27)
fecha2 = datetime.date(2023, 11, 10)
diferencia = fecha2 – fecha1
print(diferencia.days)
«`

Formatear fechas y horas con strptime

La función strptime() es la contraparte de strftime(). Esta función convierte una cadena de texto que representa una fecha u hora en un objeto datetime.

  • Convertir una cadena de texto a un objeto datetime:

«`python
import datetime

cadenafecha = «2023-10-27»
formato = «%Y-%m-%d»
fecha = datetime.datetime.strptime(cadena
fecha, formato)
print(fecha)
«`

  • Convertir una cadena de texto con formato personalizado a un objeto datetime:

«`python
import datetime

cadenafechahora = «2023/10/27 15:30:00»
formato = «%Y/%m/%d %H:%M:%S»
fechahora = datetime.datetime.strptime(cadenafechahora, formato)
print(fecha
hora)
«`

Usos prácticos de datetime

El módulo datetime tiene una amplia gama de aplicaciones en el desarrollo de software, desde la creación de herramientas de gestión de tiempo hasta el desarrollo de aplicaciones web. Aquí hay algunos ejemplos:

  • Crear registros de eventos con fecha y hora:

«`python
import datetime

def registrarevento(evento):
fecha
hora = datetime.datetime.now()
registro = f»{fecha_hora.strftime(‘%Y-%m-%d %H:%M:%S’)} – {evento}»
print(registro)

registrarevento(«Inicio de sesión»)
registrar
evento(«Finalización de la tarea»)
«`

  • Validar fechas de entrada de usuario:

«`python
import datetime

def validarfecha(cadenafecha):
try:
formato = «%Y-%m-%d»
fecha = datetime.datetime.strptime(cadena_fecha, formato)
return True
except ValueError:
return False

LEER:  Modelos de Datos: Comprendiendo la Estructura de tu Información

fechaingresada = input(«Ingresa una fecha en formato YYYY-MM-DD: «)
if validar
fecha(fecha_ingresada):
print(«Fecha válida»)
else:
print(«Fecha inválida»)
«`

  • Calcular la edad de una persona a partir de su fecha de nacimiento:

«`python
import datetime

def calcularedad(fechanacimiento):
hoy = datetime.date.today()
edad = hoy.year – fechanacimiento.year
if hoy.month < fecha
nacimiento.month or (hoy.month == fechanacimiento.month and hoy.day < fechanacimiento.day):
edad -= 1
return edad

fechanacimiento = datetime.date(1990, 12, 15)
edad = calcular
edad(fecha_nacimiento)
print(f»La edad es: {edad}»)
«`

Recomendaciones adicionales

  • Siempre utiliza el formato ISO 8601 para intercambiar fechas y horas: Este formato es ampliamente aceptado y evita problemas de interpretación.
  • Utiliza la función tzlocal para obtener la zona horaria local: Esto es importante para trabajar con fechas y horas en diferentes partes del mundo.
  • Comprueba la documentación oficial de datetime para obtener información completa sobre todas sus funciones y opciones.

Conclusiones

El módulo datetime de Python es una herramienta poderosa para trabajar con fechas y horas. Al comprender los diferentes códigos de formato, las funciones de formateo y las operaciones disponibles, puedes manipular fechas y horas de manera eficiente y personalizada.

Recuerda que la capacidad de formatear fechas y horas es crucial para muchas aplicaciones de software, desde la creación de interfaces de usuario amigables hasta el almacenamiento de datos en bases de datos y la realización de análisis de datos.