Fechas y Horas

PythonBeginner
Practicar Ahora

Introducción

El módulo datetime de Python proporciona una variedad de clases para manipular fechas y horas. En este laboratorio, exploraremos algunas de las clases y funciones más comúnmente utilizadas de este módulo y aprenderemos cómo utilizarlas para realizar una variedad de tareas, como trabajar con fechas, horas y diferencias de tiempo.

Logros

  • Módulo datetime

Importando el Módulo Datetime

Para comenzar a trabajar con el módulo datetime, primero debemos importarlo.

Abra una nueva sesión del intérprete de Python:

python3

Esto se puede hacer utilizando la siguiente línea de código:

import datetime

Trabajando con Fechas

El módulo datetime proporciona la clase date para trabajar con fechas. Para crear un objeto de fecha que represente una fecha específica, podemos utilizar el constructor date(), que toma tres argumentos: el año, el mes y el día. Por ejemplo:

d = datetime.date(2021, 12, 31)
print(d)

Esto creará un objeto de fecha que representa el 31 de diciembre de 2021 y lo imprimirá en el formato "AAAA-MM-DD".

Trabajando con Horas

Además de las fechas, el módulo datetime también proporciona la clase time para trabajar con horas. Para crear un objeto de tiempo que represente una hora específica, podemos utilizar el constructor time(), que toma tres argumentos: la hora, el minuto y el segundo. Por ejemplo:

t = datetime.time(12, 30, 15)
print(t)

Esto creará un objeto de tiempo que representa las 12:30:15 PM y lo imprimirá en el formato "HH:MM:SS".

Combinando Fechas y Horas

Para trabajar con una fecha y una hora al mismo tiempo, podemos utilizar la clase datetime, que combina una fecha y una hora. Para crear un objeto datetime que represente una fecha y hora específicas, podemos utilizar el constructor datetime(), que toma seis argumentos: el año, el mes, el día, la hora, el minuto y el segundo. Por ejemplo:

dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
print(dt)

Esto creará un objeto datetime que representa el 31 de diciembre de 2021 a las 12:30:15 PM y lo imprimirá en el formato "AAAA-MM-DD HH:MM:SS".

Trabajando con Diferencias de Tiempo

Además de trabajar con fechas y horas específicas, el módulo datetime también proporciona la clase timedelta para trabajar con duraciones de tiempo. Un objeto timedelta representa una duración de tiempo y se puede sumar o restar a un objeto datetime para producir un nuevo objeto datetime. Por ejemplo:

d1 = datetime.date(2021, 12, 31)
d2 = d1 + datetime.timedelta(days=1)
print(d2)

Esto creará un objeto timedelta que representa un día, lo sumará al objeto date d1 y producirá un nuevo objeto date que representa el 1 de enero de 2022 y lo imprimirá en el formato "AAAA-MM-DD".

Formateando Fechas y Horas

El módulo datetime proporciona el método strftime(), que se puede utilizar para formatear un objeto datetime como una cadena. Este método toma una cadena de formato como argumento, que especifica el formato deseado de la cadena de salida. Por ejemplo, el siguiente código formatea un objeto datetime como una cadena en el formato "AAAA-MM-DD HH:MM:SS":

dt = datetime.datetime(2021, 12, 31, 12, 30, 15)
s = dt.strftime('%Y-%m-%d %H:%M:%S')
print(s)

Imprimirá "2021-12-31 12:30:15"

Analizando Fechas y Horas a Partir de Cadenas

El módulo datetime también proporciona el método de clase strptime(), que se puede utilizar para analizar una cadena y crear un objeto datetime. Este método toma dos argumentos: la cadena a analizar y una cadena de formato que especifica el formato esperado de la cadena de entrada. Por ejemplo, el siguiente código analiza una cadena en el formato "AAAA-MM-DD HH:MM:SS" y crea un objeto datetime:

s = '2021-12-31 12:30:15'
dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S')
print(dt)

Imprimirá "2021-12-31 12:30:15"

La cadena de formato es una cadena de caracteres que corresponde a las diferentes partes de una fecha y hora, como el año, el mes, el día, la hora, el minuto y el segundo.

A continuación, se presentan algunos de los caracteres más comúnmente utilizados en la cadena de formato:

  • %Y: año con siglo como número decimal. Por ejemplo, "2022"
  • %m: mes como número decimal con relleno de ceros. Por ejemplo, "01" para enero, "12" para diciembre
  • %d: día del mes como número decimal con relleno de ceros. Por ejemplo, "01" para el primer día del mes, "31" para el último día del mes
  • %H: hora (en formato de 24 horas) como número decimal con relleno de ceros. Por ejemplo, "00" para medianoche, "12" para mediodía, "23" para las 11 PM
  • %M: minuto como número decimal con relleno de ceros. Por ejemplo, "00" para el comienzo de la hora, "30" para la mitad de la hora
  • %S: segundo como número decimal con relleno de ceros. Por ejemplo, "00" para el comienzo del minuto, "59" para el final del minuto

Además de estos caracteres, la cadena de formato también puede incluir caracteres literales que se coincidirán con la cadena de entrada. Por ejemplo, la siguiente cadena de formato coincidirá con una fecha en el formato "AAAA-MM-DD":

fmt = '%Y-%m-%d'

El método strptime() luego utilizará esta cadena de formato para analizar la cadena de entrada y extraer el año, el mes y el día de la misma.

Es importante tener en cuenta que la cadena de formato debe coincidir exactamente con la cadena de entrada, de lo contrario se generará una excepción. Si no está seguro del formato de la cadena de entrada, puede utilizar las instrucciones try y except para manejar cualquier excepción potencial que pueda surgir.

Además, el método strptime() no se recomienda ampliamente debido a algunos problemas como que no es seguro para subprocesos y es lento. Se recomienda utilizar la función dateutil.parser.parse(), que es más flexible y más eficiente.

Trabajando con Zonas Horarias

El módulo datetime también proporciona la biblioteca pytz que se puede utilizar para trabajar con zonas horarias. Para utilizarla, primero necesitará instalarla ejecutando pip install pytz en su línea de comandos.

Una vez instalada, puede utilizar la función pytz.timezone para crear un objeto de zona horaria para una zona horaria específica, por ejemplo:

from datetime import datetime
import pytz

dt = datetime.now(pytz.timezone('US/Pacific'))
print(dt)

Esto creará un objeto datetime con la fecha y hora actual en la zona horaria del Pacífico (EE. UU.), y lo imprimirá en el formato "AAAA-MM-DD HH:MM:SS-TZ".

Resumen

En este laboratorio, hemos explorado algunas de las clases y funciones más comúnmente utilizadas del módulo datetime de Python y hemos aprendido cómo utilizarlas para realizar una variedad de tareas, como trabajar con fechas, horas y timedeltas. Hemos visto cómo crear objetos de fecha, hora y datetime utilizando los constructores adecuados y cómo combinarlos para representar puntos específicos en el tiempo. También aprendimos sobre la clase timedelta, que se puede utilizar para representar duraciones de tiempo, y cómo utilizarla para realizar operaciones aritméticas en objetos datetime.

Además de los ejemplos proporcionados en este laboratorio, el módulo datetime también proporciona una variedad de otras funciones y clases para trabajar con zonas horarias, formatear fechas y horas y analizar fechas y horas a partir de cadenas. Es un módulo poderoso y versátil que se puede utilizar para resolver una amplia variedad de problemas relacionados con el tiempo en Python.

En este laboratorio, hemos explorado algunas de las características avanzadas del módulo datetime de Python, incluyendo la conversión de formatos de fecha y hora y la conversión de zonas horarias. Aprendimos cómo utilizar los métodos strftime() y strptime() para formatear y analizar fechas y horas como cadenas y cómo utilizar la biblioteca pytz para trabajar con zonas horarias. Con estas herramientas, debería ser capaz de trabajar efectivamente con fechas y horas en Python y resolver una amplia variedad de problemas relacionados con el tiempo.