Для стандартной библиотеки требуется числовое смещение
Если у вас есть числовое смещение вашего часового пояса (по сравнению с UTC), то вы используете стандартную библиотеку:
>>> from datetime import datetime, timezone
>>> datetime.now().strftime("%c (%Z)")
'Wed Feb 13 23:00:06 2019 ()'
>>> datetime.now(tz=timezone.utc).strftime("%c (%Z)")
'Wed Feb 13 22:00:11 2019 (UTC)'
>>> datetime.now(tz=timezone(timedelta(hours=2))).strftime("%c (%Z)")
'Thu Feb 14 00:00:20 2019 (UTC+02:00)'
Хотя, посколькусмещение может изменяться в течение года (например, при переходе на летнее время), рекомендуется использовать именованный часовой пояс.
с dateutils
, используя базу данных часовых поясов хоста
Документация Python по часовому поясу указывает на пакет dateutil.tz , который будет использовать базу данных часового пояса с компьютера, на котором он работает.С другой стороны, пакет pytz поставляется со связанной базой данных часовых поясов.
Я бы лично порекомендовал пакет dateutil
, поскольку база данных уже существует на работающей машине.Пока машина поддерживается в актуальном состоянии (как и любой сервер и ПК), все в порядке.
>>> from dateutil.tz import gettz # GNU/Linux and macOS
>>> # Or, on Windows: from dateutil.tz.win import gettz
>>> datetime.now(tz=gettz("Europe/Paris")).strftime("%c (%Z)")
'Wed Feb 13 23:00:58 2019 (CET)'
>>> datetime.now(tz=gettz("Asia/Taipei")).strftime("%c (%Z)")
'Thu Feb 14 06:01:27 2019 (CST)'