Per convertire un tempo in una fuso orario ad un altro fuso orario in Python, si potrebbe use datetime.astimezone()
:
time_in_new_timezone = time_in_old_timezone.astimezone(new_timezone)
Dato aware_dt
(un oggetto datetime
in qualche fuso orario), per convertirlo in altri fusi orari e per stampare i tempi in un determinato formato di tempo:
#!/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}}")
Se f""
sintassi non è disponibile, è possibile sostituirlo con "".format(**vars())
dove si poteva impostare aware_dt
dal momento in corrente nel fuso orario locale:
from datetime import datetime
import tzlocal # $ pip install tzlocal
local_timezone = tzlocal.get_localzone()
aware_dt = datetime.now(local_timezone) # the current time
O dalla stringa tempo di ingresso nel fuso orario locale:
naive_dt = datetime.strptime(time_string, time_format)
aware_dt = local_timezone.localize(naive_dt, is_dst=None)
dove time_string
potrebbe apparire come: '2016-11-19 02:21:42'
. Corrisponde a time_format = '%Y-%m-%d %H:%M:%S'
.
is_dst=None
forza un'eccezione se la stringa del tempo di ingresso corrisponde a un orario locale non esistente o ambiguo come durante una transizione dell'ora legale. Potresti anche passare is_dst=False
, is_dst=True
.Vedere i collegamenti con maggiori dettagli in Python: How do you convert datetime/timestamp from one timezone to another timezone?
nota: stampa * diversi * momenti temporali in * diversi * fusi orari. OP chiede circa ** lo stesso ** momento in diversi fusi orari. – jfs