У меня есть строка даты 18 May 14:30
, которая соответствует британскому летнему времени (WEST
или UTC+1
).Я хотел бы преобразовать его в центральное европейское (летнее) время.
Вот мой код
# from datetime import datetime
# from pytz import timezone
d = '18 May 14:30'
# Attempt 1
dd=datetime.strptime(d, '%d %b %H:%M').replace(year=datetime.now().year, tzinfo=timezone('WET'))
dd.astimezone(timezone('CET'))
# datetime.datetime(2019, 5, 18, 16, 30, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>)
# It should be 15:30, not 16:30
# Attempt 2
dd=datetime.strptime(d, '%d %b %H:%M').replace(year=datetime.now().year, tzinfo=timezone('WET'))
# Same result as above
# Attempt 3
dd=datetime.strptime(d, '%d %b %H:%M').replace(year=datetime.now().year, tzinfo=timezone('Etc/GMT-1'))
dd.astimezone(timezone('CET'))
# datetime.datetime(2019, 5, 18, 15, 30, tzinfo=<DstTzInfo 'CET' CEST+2:00:00 DST>)
# This works
Так что моя проблема в третьей попытке мне пришлось вручную указать GMT-1
, тогда как CET
автоматически преобразуется в CEST
.Я надеялся, что это будет работать одинаково для WET
(до WEST
).
Кроме того, меня также смущает тот факт, что согласно британской вики летнее время должно быть UTC +1
, но мне пришлось установить GMT-1
(так как GMT+1
возвращает 18:30
).