EST может означать два разных часовых пояса: европейское летнее время или восточное стандартное время.Таким образом, строки даты и времени, такие как 08/07/2011 04:22 EST
, неоднозначны - не существует надежного способа правильно преобразовать такие строки в дату / время с учетом часового пояса.
Если вы хотите просто сделать удар при возможно правильном ответезатем вы можете сгенерировать сопоставление между аббревиатурами, такими как EST
, и именами часовых поясов, сделать случайный выбор среди допустимых часовых поясов, а затем использовать этот часовой пояс для построения даты и времени с учетом часового пояса:
import dateutil.tz as dtz
import pytz
import datetime as dt
import collections
import random
timezones = collections.defaultdict(list)
for name in pytz.common_timezones:
timezone = dtz.gettz(name)
try:
now = dt.datetime.now(timezone)
except ValueError:
# dt.datetime.now(dtz.gettz('Pacific/Apia')) raises ValueError
continue
abbrev = now.strftime('%Z')
timezones[abbrev].append(name)
date_string, tz_string = '10/07/2011 04:22 CEST'.rsplit(' ', 1)
date = dt.datetime.strptime(date_string, '%m/%d/%Y %H:%M')
print(date)
# 2011-10-07 04:22:00
tz = pytz.timezone(random.choice(timezones[tz_string]))
print(tz)
# Europe/Oslo
date = tz.localize(date)
print(date)
# 2011-10-07 04:22:00+02:00