Requisito previo: Python – datetime.tzinfo()
Python admite el módulo de fecha y hora para realizar manipulaciones de fecha y hora. El módulo de fecha y hora permite al usuario realizar varias operaciones aritméticas relacionadas con la fecha y la hora, la extracción de varios marcos de tiempo y el formateo de la salida en diferentes formatos. Los objetos de este tipo son inmutables. El módulo se puede importar al espacio de trabajo de Python usando el siguiente comando:
import datetime
Los objetos de fecha y hora también admiten un atributo de zona horaria adicional, que es opcional. Este atributo se puede asignar a una instancia de una subclase de la clase tzinfo. La clase de objeto tzinfo puede satisfacer los siguientes requisitos, es decir, capturar información sobre el desplazamiento fijo de la hora UTC, es decir, la propia UTC o las zonas horarias EST y EDT de América del Norte, el nombre de la zona horaria correspondiente y también si el horario de verano está actualmente en vigor. tzinfo es una clase base abstracta. Cualquier subclase concreta arbitraria de tzinfo puede necesitar implementar sus propios métodos. El desplazamiento de una zona horaria se refiere a cuántas horas está la zona horaria con respecto a la hora universal coordinada (UTC).
Determinar el tipo de objeto de fecha y hora usando tzinfo
Hay dos tipos de objetos, ingenuos y conscientes. En caso de que el objeto no contenga ninguna información de zona horaria, entonces el objeto de fecha y hora es ingenuo, de lo contrario consciente. En el caso de un objeto ingenuo, tzinfo devuelve Ninguno.
Python3
# importing required module import datetime # create object datetime_obj = datetime.datetime.now() print(datetime_obj.tzinfo)
Producción:
None
En caso de que necesitemos usar objetos de fecha y hora conscientes, se puede especificar explícitamente una zona horaria. La biblioteca pytz se puede usar para localizar el objeto de fecha y hora creado, que proporciona información sobre la zona horaria creada. Los objetos de fecha y hora ingenuos y los objetos de fecha y hora conscientes no se pueden comparar; de lo contrario, arrojará un error.
Python3
# importing the required modules import datetime import pytz # instantiate datetime object obj = datetime.datetime.now() # specifying the timezone using pytz library tzone = pytz.timezone("America/Los_Angeles") # localizing the datetime object datetime_obj = tzone.localize(obj) # extracting time zone info of the object print(datetime_obj.tzinfo)
Producción:
America/Los_Angeles
Sustitución de la zona horaria del objeto de fecha y hora
Se crea una instancia de un objeto de zona horaria ingenuo mediante el objeto datetime.now(). La nueva zona horaria se puede especificar explícitamente usando el módulo pytz.timezone(). La zona horaria especificada se sigue utilizando. El método replace se invoca sobre el objeto datetime y el argumento tzinfo se establece en el valor de la zona horaria reemplazada. Luego, este valor se extrae utilizando el método astimezone() sobre el objeto ingenuo de zona horaria y tomando la zona horaria modificada como su argumento.
Python3
# importing required modules from datetime import datetime import pytz # creating a datetime object curr_datetime = datetime.now() print("Current timezone") print(curr_datetime) # creating timezone using pytz package changed_timezone = pytz.timezone('US/Pacific') # replacing timezone using the specified timezone value curr_datetime = curr_datetime.replace(tzinfo=changed_timezone) curr_datetime = curr_datetime.astimezone(changed_timezone) print("Replaced timezone") print(curr_datetime)
Producción:
Current timezone 2021-02-12 20:20:50.668454 Replaced timezone 2021-02-12 20:20:50.668454-07:53