Получить локальный часовой пояс системы в python
Кажется странным, но я не могу найти простой способ найти локальный часовой пояс, используя Pandas/pytz в Python.
Я могу сделать:
>>> pd.Timestamp('now', tz='utc').isoformat()
Out[47]: '2016-01-28T09:36:35.604000+00:00'
>>> pd.Timestamp('now').isoformat()
Out[48]: '2016-01-28T10:36:41.830000'
>>> pd.Timestamp('now').tz_localize('utc') - pd.Timestamp('now', tz='utc')
Out[49]: Timedelta('0 days 01:00:00')
Который даст мне часовой пояс, но это, вероятно, не лучший способ сделать это...
Есть ли команда в pytz или pandas для получения системного часового пояса? (предпочтительно в python 2.7)
Ответы
Ответ 1
Я не думаю, что это возможно с помощью pytz
или pandas
, но вы всегда можете установить python-dateutil или tzlocal:
from dateutil.tz import tzlocal
datetime.now(tzlocal())
или
from tzlocal import get_localzone
local_tz = get_localzone()
Ответ 2
time.timezone
должно работать.
Смещение локального (не летнего) часового пояса в секундах к западу от UTC (отрицательный в большинстве стран Западной Европы, положительный в США, нулевой в Великобритании).
Деление на 3600 даст вам смещение в часах:
import time
print(time.timezone / 3600.0)
Это не требует каких-либо дополнительных библиотек Python.
Ответ 3
Хотя он не использует pytz/Pandas, другие ответы тоже не подходят, поэтому я решил опубликовать то, что я использую в mac/linux:
import subprocess
timezone = subprocess.check_output("date +%Z")
Преимущества перед другими ответами: учитывает переход на летнее время, не требует установки дополнительных библиотек.