Я не могу воспроизвести пример для datetime.datetime.now
. pytz
также показывает правильное изменение смещения UT C в 2017 году для часового пояса «Африка / Хартум». Однако вам необходимо использовать метод localize
(см., Например, здесь ).
import datetime
import pytz
tz = pytz.timezone('Africa/Khartoum')
# correct UTC offset for "now":
tz_offset = tz.localize(datetime.datetime.now()).strftime('%z')
print(tz_offset)
# +0200
# also correct UTC offset around 1st Nov 2017:
tz_offset = tz.localize(datetime.datetime(2017,10,31)).strftime('%z')
print(tz_offset)
# +0300
tz_offset = tz.localize(datetime.datetime(2017,11,1)).strftime('%z')
print(tz_offset)
# +0200
Если вы не используете localize
, вы получите только среднее местное время . С dateutil
вам не придется локализовать и можно напрямую указать часовой пояс:
import dateutil
tz = dateutil.tz.gettz('Africa/Khartoum')
tz_offset = datetime.datetime(2017,10,31, tzinfo=tz).strftime('%z')
print(tz_offset)
# +0300
tz_offset = datetime.datetime(2017,11,1, tzinfo=tz).strftime('%z')
print(tz_offset)
# +0200