El Módulo datetime, Funciones para Manejo de la Hora y la Fecha en Python

El módulo datetime de Python es una herramienta poderosa y versátil que permite a los desarrolladores trabajar con fechas y horas de manera eficiente. Este documento explora las principales funcionalidades del módulo, incluyendo la creación de objetos de fecha y hora, la manipulación de estos objetos y la realización de operaciones comunes como la comparación y el formateo. A través de ejemplos prácticos, se ilustrará cómo utilizar este módulo para resolver problemas cotidianos relacionados con el tiempo.

El Módulo datetime, Funciones para Manejo de la Hora y la Fecha en Python
El Módulo datetime, Funciones para Manejo de la Hora y la Fecha en Python.

Introducción al Módulo datetime

El módulo datetime en Python proporciona clases para manipular fechas y horas. Este módulo es muy útil para trabajar con fechas y horas de manera eficiente y precisa. A continuación, se describen las principales categorías y comandos del módulo datetime:

  • datetime: Combina fecha y hora.
  • date: Representa solo la fecha (año, mes, día).
  • time: Representa solo la hora (hora, minuto, segundo, microsegundo).
  • timedelta: Representa la diferencia entre dos fechas o horas.

Creación de Fechas y Horas

Estas funciones permiten crear objetos de tipo fecha y hora.

  • date(año, mes, día): Crea una fecha (solo contiene año, mes y día).
                        
                          from datetime import datetime
                          fecha = date(2024, 12, 19)
                          print(fecha)  # Salida: 2023-12-19
                        
                      
  • time(hora, minuto, segundo, microsegundo): Crea una hora (solo contiene hora, minuto, segundo y opcionalmente microsegundos).
                        
                          from datetime import time
                          hora = time(15, 30, 45)
                          print(hora)  # Salida: 15:30:45
                        
                      
  • datetime(año, mes, día, hora, minuto, segundo, microsegundo): Crea una combinación de fecha y hora.
                        
                          from datetime import datetime
                          fecha_hora = datetime(2024, 12, 19, 15, 48, 45)
                          print(fecha_hora)  # Salida: 2024-12-19 15:48:45
                        
                      
  • replace(year, month, day, hour, minute, second, microsecond, tzinfo): Devuelve un nuevo objeto datetime con los atributos especificados reemplazados.
                        
                          from datetime import datetime
                          # Crear una fecha y hora
                          fecha_hora = datetime(2023, 10, 5, 12, 30, 45)
                          # Usar el método replace para cambiar el año y la hora
                          nueva_fecha_hora = fecha_hora.replace(year=2024, hour=15)
                          print("Fecha y hora original:", fecha_hora)  # Salida: Fecha y hora original: 2023-10-05 12:30:45
                          print("Nueva fecha y hora:", nueva_fecha_hora)  # Salida: Nueva fecha y hora: 2024-10-05 15:30:45
                        
                      
  • ctime(secs): convierte un valor de tiempo dado en segundos (desde el Epoch, típicamente el 1 de enero de 1970 a las 00:00:00 UTC) en una cadena con un formato de fecha y hora legible por humanos. Si no se proporciona un valor de tiempo, la función devuelve la fecha y hora actuales del sistema.
                        
                          import time
                          # Ejemplo: 1000000000 segundos desde el Epoch
                          print(time.ctime(1000000000))  # Salida: Sat Sep  8 20:46:40 2001
                        
                      

Obtención de Fecha y Hora Actual

  • datetime.now(): Devuelve la fecha y hora actual.
                        
                          from datetime import datetime
                          now = datetime.now()
                          print(now)  # Salida: 2024-12-19 18:15:42.812317
                        
                      
  • date.today(): Devuelve solo la fecha actual.
                        
                          from datetime import date
                          today = date.today()
                          print(today)  # Salida: 2024-12-19
                        
                      
  • datetime.now(timezone.utc): Devuelve la fecha y hora actual en UTC (Tiempo Universal Coordinado).
                        
                          from datetime import datetime, timezone
                          print("Hora actual en UTC:")
                          utc_now = datetime.now(timezone.utc)  # Alternativa para obtener UTC
                          print(utc_now)  # Salida: 2024-12-19 23:43:48.528313+00:00
                        
                      

Formateo Y Conversión

Estas funciones ayudan a convertir fechas y horas a cadenas de texto o viceversa.

  • strftime(formato): Convierte un objeto datetime a una cadena de texto en un formato específico.
                        
                          from datetime import datetime
                          # Obtener la fecha y hora actual
                          fecha_hora = datetime.now()  # Usar datetime.now() para obtener la fecha y hora actual
                          # Formatear la fecha y hora
                          formateada = fecha_hora.strftime('%Y-%m-%d %H:%M:%S')
                          print(formateada)  # Salida esperada: 2024-12-19 19:03:4
                        
                      

    Formatos comunes:

    • %Y: Año completo (2024)
    • %m: Mes (01-12)
    • %d: Día del mes (01-31)
    • %H: Hora (00-23)
    • %M: Minuto (00-59)
    • %S: Segundo (00-59)
  • strptime(cadena, formato): Convierte una cadena de texto a un objeto datetime.
                        
                          from datetime import datetime
                          texto = "2024-12-19 19:08:08"
                          obj = datetime.strptime(texto, '%Y-%m-%d %H:%M:%S')
                          print(obj)  # Salida: 2024-12-19 19:08:08
                        
                      

Operaciones con Fechas y Horas

Estas funciones permiten realizar cálculos con fechas y horas

  • timedelta(días, segundos, minutos, horas): Representa un cambio en el tiempo, útil para sumar o restar.
                        
                          from datetime import datetime, timedelta
                          # Obtener la fecha y hora actual
                          fecha_hora = datetime.now()  # Usar datetime.now() para obtener la fecha y hora actual
                          print(fecha_hora)  # Salida: 2024-12-19 19:27:53.169903
                          delta = timedelta(days=5, hours=3)
                          nueva_fecha = fecha_hora + delta
                          print(nueva_fecha)  # Salida: 2024-12-24 22:27:53.169903
                        
                      
  • Restar dos fechas u horas devuelve un timedelta.
                    
                      diferencia = nueva_fecha - fecha_hora
                      print(diferencia)  # Salida: 5 days, 3:00:00
                    
                  

Propiedades y Métodos Útiles

Estas funciones extraen información específica de un objeto datetime.

  • year, month, day: Obtienen el año, mes o día.
                        
                          from datetime import datetime, timedelta
                          # Obtener la fecha y hora actual
                          fecha_hora = datetime.now()
                          print(fecha_hora.year)  # Salida: 2024
                          print(fecha_hora.month)  # Salida: 12
                          print(fecha_hora.day)  # Salida: 19
                        
                      
  • hour, minute, second, microsecond: Obtienen la hora, minuto, segundo o microsegundo.
                        
                          from datetime import datetime, timedelta
                          # Obtener la fecha y hora actual
                          fecha_hora = datetime.now()
                          print(fecha_hora.hour)  # Salida: 19
                          print(fecha_hora.minute)  # Salida: 52
                          print(fecha_hora.second)  # Salida: 23
                        
                      
  • weekday(): Devuelve el día de la semana como un entero (lunes=0, domingo=6).
  • isoweekday(): Devuelve el día de la semana como un entero (lunes=1, domingo=7).
                        
                          from datetime import datetime, timedelta
                          # Obtener la fecha y hora actual
                          fecha_hora = datetime.now()
                          print(fecha_hora.weekday())  # Salida: 3 (jueves)
                          print(fecha_hora.isoweekday())  # Salida: 4 (jueves)
                      

Zona Horaria

Se utiliza para trabajar con zonas horarias específicas.

  • datetime.timezone: Define un objeto de zona horaria.
                        
                          from datetime import datetime, timezone, timedelta
                          zona = timezone(timedelta(hours=-5))  # Zona horaria UTC-5
                          fecha_utc = datetime(2023, 12, 19, 15, 30, tzinfo=zona)
                          print(fecha_utc)  # Salida: 2023-12-19 15:30:00-05:00
                        
                      
  • astimezone(zona): Convierte un objeto datetime a otra zona horaria.
                        
                          from datetime import datetime, timezone, timedelta
                          zona = timezone(timedelta(hours=-5))  # Zona horaria UTC-5
                          fecha_utc = datetime(2024, 12, 19, 19, 35, tzinfo=zona)
                          print(fecha_utc)  # Salida: 2024-12-19 19:35:00-05:00
                          zona_utc = timezone.utc
                          nueva_zona = fecha_utc.astimezone(zona_utc)
                          print(nueva_zona)  # Salida: 2024-12-20 00:35:00+00:00
                        
                      

Constantes

  • INYEAR: El año mínimo soportado (1).
  • AXYEAR: El año máximo soportado (9999).
  • min: El valor mínimo de timedelta (-999999999 días).
  • max: El valor máximo de timedelta (999999999 días).
  • resolution: La resolución de timedelta (1 microsegundo)
                
                  from datetime import datetime, timedelta
                  # Mínimo y máximo año soportado por datetime
                  print("Año mínimo soportado por datetime:", datetime.min.year)  # Salida: 1
                  print("Año máximo soportado por datetime:", datetime.max.year)  # Salida: 9999
                  # Valor mínimo de timedelta (es decir, -999999999 días)
                  print("Valor mínimo de timedelta:", timedelta.min)  # Salida: -999999999 days, 0:00:00
                  # Valor máximo de timedelta (es decir, 999999999 días)
                  print("Valor máximo de timedelta:", timedelta.max)  # Salida: 999999999 days, 23:59:59.999999
                  # Resolución de timedelta (es decir, 1 microsegundo)
                  print("Resolución de timedelta:", timedelta.resolution)  # Salida: 0:00:00.000001
                  # Crear una fecha con el año mínimo (1)
                  min_fecha = datetime(datetime.min.year, 1, 1)
                  print("Fecha con el año mínimo:", min_fecha)  # Salida: 0001-01-01 00:00:00
                  # Crear una fecha con el año máximo (9999)
                  max_fecha = datetime(datetime.max.year, 12, 31)
                  print("Fecha con el año máximo:", max_fecha)  # Salida: 9999-12-31 00:00:00
                  # Sumar y restar los valores extremos de timedelta (Ajustado para no exceder los límites)
                  fecha_actual = datetime.now()
                  # Usamos valores más pequeños de timedelta en lugar de los extremos
                  fecha_min = fecha_actual + timedelta(days=-1)  # Restar 1 día
                  fecha_max = fecha_actual + timedelta(days=1)   # Sumar 1 día
                  print("Fecha actual:", fecha_actual)
                  print("Fecha actual menos un día:", fecha_min)
                  print("Fecha actual más un día:", fecha_max)
                
              

COMENTARIOS

Si tiene alguna inquietud, duda o ha encontrado algún error, por favor infórmelo a través del formulario disponible para este propósito.

La política de privacidad, y los términos y condiciones están disponibles en el formulario de contacto.