Для преобразования времени в одном часовом поясе, на другой часовой пояс в Python, вы могли бы use datetime.astimezone()
:
time_in_new_timezone = time_in_old_timezone.astimezone(new_timezone)
Учитывая aware_dt
(а datetime
объекта в некоторой временной зоне), чтобы преобразовать его в других часовые пояса и напечатать раз в заданном формате времени:
#!/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}}")
Если f""
синтаксис недоступен, вы можете заменить его "".format(**vars())
, где вы могли бы установить aware_dt
от текущего времени в локальной временной зоне:
from datetime import datetime
import tzlocal # $ pip install tzlocal
local_timezone = tzlocal.get_localzone()
aware_dt = datetime.now(local_timezone) # the current time
Или от времени ввода строки в локальной временной зоне:
naive_dt = datetime.strptime(time_string, time_format)
aware_dt = local_timezone.localize(naive_dt, is_dst=None)
где time_string
может выглядеть так: '2016-11-19 02:21:42'
. Это соответствует time_format = '%Y-%m-%d %H:%M:%S'
.
is_dst=None
заставляет исключение, если строка времени ввода соответствует несуществующему или неоднозначному местному времени, например, во время перехода на летнее время. Вы также можете пройти is_dst=False
, is_dst=True
.Смотрите ссылки с более подробной информации на Python: How do you convert datetime/timestamp from one timezone to another timezone?
примечание: оно печатает * разные * моменты времени в * разных * часовых поясах. OP запрашивает ** тот же ** момент времени в разных часовых поясах. – jfs