Существует ли элегантный способ отображения текущего времени в другом часовом поясе?
Я хотел бы иметь что-то в общем духе:
cur = <Get the current time, perhaps datetime.datetime.now()> print("Local time {}".format(cur)) print("Pacific time {}".format(<something like cur.tz('PST')>)) print("Israeli time {}".format(<something like cur.tz('IST')>))
Переведено автоматически
Ответ 1
Более простой метод:
from datetime import datetime from pytz import timezone
Python 3.9 (или выше): используйте zoneinfo из стандартной библиотеки:
from datetime import datetime, timezone from zoneinfo import ZoneInfo
# Israel and US/Pacific time: now_Israel = datetime.now(ZoneInfo('Israel')) now_Pacific = datetime.now(ZoneInfo('US/Pacific')) print(f"Israeli time {now_Israel.isoformat(timespec='seconds')}") print(f"Pacific time {now_Pacific.isoformat(timespec='seconds')}") # Israeli time 2021-03-26T18:09:18+03:00 # Pacific time 2021-03-26T08:09:18-07:00
# for reference, local time and UTC: now_local = datetime.now().astimezone() now_UTC = datetime.now(tz=timezone.utc) print(f"Local time {now_local.isoformat(timespec='seconds')}") print(f"UTC {now_UTC.isoformat(timespec='seconds')}") # Local time 2021-03-26T16:09:18+01:00 # I'm on Europe/Berlin # UTC 2021-03-26T15:09:18+00:00
более старые версии Python 3: вы можете использовать zoneinfo через модуль backports или использовать dateutil вместо этого. dateutil tz.gettz следует той же семантике, что и zoneinfo.ZoneInfo:
from dateutil.tz import gettz
now_Israel = datetime.now(gettz('Israel')) now_Pacific = datetime.now(gettz('US/Pacific')) print(f"Israeli time {now_Israel.isoformat(timespec='seconds')}") print(f"Pacific time {now_Pacific.isoformat(timespec='seconds')}") # Israeli time 2021-03-26T18:09:18+03:00 # Pacific time 2021-03-26T08:09:18-07:00
Ответ 4
Одним из способов, с помощью настройки часового пояса библиотеки C, является