Para convertir un tiempo en una zona horaria a otra zona horaria en Python, usted podría use datetime.astimezone()
:
time_in_new_timezone = time_in_old_timezone.astimezone(new_timezone)
Dada aware_dt
(un objeto datetime
en alguna zona horaria), para convertirlo en otras zonas horarias y la impresión de los tiempos en un formato de tiempo determinado:
#!/usr/bin/env python3
import pytz # $ pip install pytz
time_format = "%Y-%m-%d %H:%M:%S%z"
tzids = ['Asia/Shanghai', 'Europe/London', 'America/New_York']
for tz in map(pytz.timezone, tzids):
time_in_tz = aware_dt.astimezone(tz)
print(f"{time_in_tz:{time_format}}")
Si f""
sintaxis no está disponible, usted podría reemplazarlo con "".format(**vars())
donde se podía establecer aware_dt
de la hora actual en la zona horaria local:
from datetime import datetime
import tzlocal # $ pip install tzlocal
local_timezone = tzlocal.get_localzone()
aware_dt = datetime.now(local_timezone) # the current time
O de la cadena de tiempo de entrada en la zona horaria local:
naive_dt = datetime.strptime(time_string, time_format)
aware_dt = local_timezone.localize(naive_dt, is_dst=None)
donde time_string
podría parecerse a: '2016-11-19 02:21:42'
. Corresponde al time_format = '%Y-%m-%d %H:%M:%S'
.
is_dst=None
fuerza una excepción si la cadena de tiempo de entrada corresponde a una hora local no existente o ambigua, como durante una transición DST. También puede pasar is_dst=False
, is_dst=True
.Ver enlaces con más detalles en Python: How do you convert datetime/timestamp from one timezone to another timezone?
nota: imprime * momentos de tiempo * diferentes en * zonas horarias * diferentes. OP pregunta por ** el mismo ** momento de tiempo en diferentes zonas horarias. – jfs