Skip to main content

Manejo de fechas

Para trabajar con fechas en Python, el módulo más comúnmente utilizado es datetime. Este módulo ofrece varias clases para manejar fechas y horas de manera efectiva. Las principales clases son datetime, date, y time. A continuación, te proporcionaré una guía amplia sobre cómo trabajar con fechas en Python, incluyendo cómo crear, manipular y formatear fechas.

1. Importación del módulo datetime

Para trabajar con fechas en Python, debes importar el módulo datetime:

import datetime

2. Clases principales

  • datetime.datetime: Representa una fecha y hora combinadas.
  • datetime.date: Representa solo una fecha (año, mes y día).
  • datetime.time: Representa solo una hora (horas, minutos, segundos y microsegundos).

3. Creación de fechas y horas

  • Crear una fecha:

    from datetime import date

    # Crear una fecha específica
    fecha = date(2024, 4, 24)
    print(fecha) # Salida: 2024-04-24
  • Crear una hora:

    from datetime import time

    # Crear una hora específica
    hora = time(15, 30, 45)
    print(hora) # Salida: 15:30:45
  • Crear una fecha y hora combinadas:

    from datetime import datetime

    # Crear una fecha y hora específica
    fecha_hora = datetime(2024, 4, 24, 15, 30, 45)
    print(fecha_hora) # Salida: 2024-04-24 15:30:45

4. Obtener la fecha y hora actual

  • Fecha actual:

    from datetime import date

    fecha_actual = date.today()
    print(fecha_actual) # Salida: (Fecha actual)
  • Fecha y hora actual:

    from datetime import datetime

    fecha_hora_actual = datetime.now()
    print(fecha_hora_actual) # Salida: (Fecha y hora actual)

5. Manipulación de fechas

  • Suma y resta de tiempo:

    from datetime import datetime, timedelta

    # Sumar 5 días a la fecha actual
    nueva_fecha = datetime.now() + timedelta(days=5)
    print(nueva_fecha)

    # Restar 10 días de la fecha actual
    nueva_fecha = datetime.now() - timedelta(days=10)
    print(nueva_fecha)
  • Diferencia entre fechas:

    from datetime import datetime

    fecha1 = datetime(2024, 4, 24)
    fecha2 = datetime(2024, 5, 24)

    diferencia = fecha2 - fecha1
    print(diferencia) # Salida: 30 days, 0:00:00

6. Formateo de fechas

El método strftime() se utiliza para formatear fechas:

from datetime import datetime

fecha_hora = datetime(2024, 4, 24, 15, 30, 45)

# Formatear fecha y hora
formato = fecha_hora.strftime('%Y-%m-%d %H:%M:%S')
print(formato) # Salida: 2024-04-24 15:30:45

7. Análisis de cadenas de fechas

El método strptime() se utiliza para analizar cadenas de fechas:

from datetime import datetime

cadena_fecha = '2024-04-24 15:30:45'
formato = '%Y-%m-%d %H:%M:%S'

fecha_hora = datetime.strptime(cadena_fecha, formato)
print(fecha_hora) # Salida: 2024-04-24 15:30:45

8. Zona horaria

El módulo pytz se puede usar para manejar zonas horarias:

import pytz
from datetime import datetime

# Ejemplo de uso de zona horaria
zona_horaria = pytz.timezone('America/New_York')
fecha_hora_actual = datetime.now(zona_horaria)
print(fecha_hora_actual) # Salida: Fecha y hora en la zona horaria especificada

Formateo de fechas

El método strftime() es una función de la clase datetime que permite formatear fechas y horas en Python. Permite convertir una fecha y hora en una cadena de texto según un formato específico. El formato se define mediante una serie de códigos de formato que representan diferentes componentes de la fecha y la hora.

A continuación, te explicaré en detalle cómo utilizar strftime() y los códigos de formato más comunes:

Uso básico de strftime()

  • Para formatear una fecha y hora, primero necesitas crear un objeto datetime o date.
  • Luego, puedes usar el método strftime() para convertir esa fecha u hora en una cadena de texto utilizando un formato específico.
from datetime import datetime

# Crear una fecha y hora específica
fecha_hora = datetime(2024, 4, 24, 15, 30, 45)

# Formatear la fecha y hora utilizando `strftime()`
formato = fecha_hora.strftime('%Y-%m-%d %H:%M:%S')
print(formato) # Salida: 2024-04-24 15:30:45

Códigos de formato strftime()

A continuación, se presenta una lista de los códigos de formato más comunes que puedes usar con strftime():

  • %Y: Año con cuatro dígitos (ejemplo: 2024).
  • %y: Año con dos dígitos (ejemplo: 24 para 2024).
  • %m: Mes con dos dígitos (ejemplo: 04 para abril).
  • %B: Nombre completo del mes (ejemplo: April).
  • %b: Abreviatura del nombre del mes (ejemplo: Apr).
  • %d: Día del mes con dos dígitos (ejemplo: 24).
  • %A: Nombre completo del día de la semana (ejemplo: Wednesday).
  • %a: Abreviatura del nombre del día de la semana (ejemplo: Wed).
  • %H: Hora en formato de 24 horas con dos dígitos (ejemplo: 15 para 3 p.m.).
  • %I: Hora en formato de 12 horas con dos dígitos (ejemplo: 03 para 3 p.m.).
  • %p: AM o PM.
  • %M: Minutos con dos dígitos (ejemplo: 30).
  • %S: Segundos con dos dígitos (ejemplo: 45).
  • %f: Microsegundos.
  • %z: Desplazamiento de la zona horaria en formato ±HHMM.
  • %Z: Nombre de la zona horaria.
  • %j: Día del año (ejemplo: 114 para el 24 de abril).
  • %U: Semana del año, donde el domingo es el primer día de la semana.
  • %W: Semana del año, donde el lunes es el primer día de la semana.
  • %c: Fecha y hora en formato completo (ejemplo: Wed Apr 24 15:30:45 2024).
  • %x: Fecha en formato local.
  • %X: Hora en formato local.

Ejemplo de uso de strftime()

from datetime import datetime

# Crear una fecha y hora específica
fecha_hora = datetime(2024, 4, 24, 15, 30, 45)

# Usar diferentes códigos de formato con `strftime()`
formato1 = fecha_hora.strftime('%Y-%m-%d')
formato2 = fecha_hora.strftime('%A, %B %d, %Y')
formato3 = fecha_hora.strftime('%H:%M:%S')
formato4 = fecha_hora.strftime('%I:%M %p')

print(formato1) # Salida: 2024-04-24
print(formato2) # Salida: Wednesday, April 24, 2024
print(formato3) # Salida: 15:30:45
print(formato4) # Salida: 03:30 PM