Я пишу сценарий питона, который содержит две строки кода, превращающего дату, когда был принят в метод времени UTC:Неправильный временной интервал Python?
print "Timezone: %s" % get_localzone()
date = datetime.now(tz=get_localzone())
print "Local time: %s" % date
utc = pytz.utc
utc_date = date.astimezone(utc)
print "UTC date: %s" % utc_date
и результат:
Timezone: America/Chicago
Local time: 2015-06-17 14:58:45.224827-05:00
UTC date: 2015-06-17 19:58:45.224827+00:00
Как вы можете см смещение в локальное время «-05: 00», ничего плохого с ним, но когда я создаю пользовательский объект DATETIME с таким же часовым поясом:
date = datetime(2015, 6, 17, 14, 58, 45, tzinfo=get_localzone())
результатом стал с:
Timezone: America/Chicago
Local time: 2015-06-17 14:58:45-05:51
Смещение изменено с «-05: 00» на «-05: 51». Я даже использовал то же время, что и первый «datetime.now()», и часовой пояс не изменился, кто-нибудь, пожалуйста, объясните мне, почему это происходит? Благодаря!
Спасибо за подробный ответ, он решил мою проблему :) –
@YueQiLi: note: вы должны использовать 'datetime.now (tz)' вместо 'tz.localize (datetime.now())'. Последнее может завершиться неудачей, если локальное время неоднозначно (например, во время перехода на летнее время). Если время ввода не сейчас, вы можете передать параметр 'is_dst' в' tz.localize() ', чтобы устранить неоднозначность. – jfs
@ J.F.Sebastian Спасибо, я просто взглянул на [документацию pytz] (http://pythonhosted.org/pytz/), и вы правы, я добавлю это в свой код. О другом подобном вопросе, несмотря на то, что обе наши проблемы вызваны неправильным использованием конструктора datetime, для начинающих, как я, все равно трудно классифицировать их в одну и ту же проблему. Сохранение моей будет полезно для других людей, чтобы избежать такой ошибки новобранец :) –