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

Introducción

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.

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.


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.

Deje su comentario

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