Что-то, над чем я сейчас работаю, требует локализованного времени для пользователей по всему миру. Все данные хранятся в формате UTC, поэтому их преобразование достаточно просто, и у нас есть известная, безопасная точка отсчета и т. Д.Выражение смещения часового пояса - разъяснение оценено
Однако, что-то о том, как выражено смещение, заставляет меня почесать голову ,
>>> timezone.now() # get the UTC-stamped server time as an example
datetime.datetime(2013, 5, 21, 16, 37, 54, 62598, tzinfo=<UTC>)
>>> eastern = pytz.timezone('US/Eastern') # localise this to US/Eastern
>>> utc_dt.astimezone(eastern)
datetime.datetime(2013, 5, 21, 12, 37, 54, 62598,
tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)
(Это мой разрыв строки в выводе даты и времени, только чтобы сделать его легче обнаружить бит я на о.)
Это выражение смещения кажется, хорошо, немного над Вверх. Вместо того, чтобы просто сказать, что это смещение -4h от UTC, похоже, что это минус один день плюс 20:00 часов. Это правильно?
я не уверен, почему текст формируется таким образом, но это просто отладочный вывод, правильно? Действительно ли это имеет значение, то как оно отформатировано? Вероятно, вы будете использовать 'strftime' или подобное при использовании в вашем приложении. –
Кроме того, вы должны знать, что 'US/*' часовые пояса являются псевдонимами и существуют для обратной совместимости. Вероятно, вы должны использовать 'America/New_York'. См. [Здесь] (http://en.wikipedia.org/wiki/List_of_tz_database_time_zones) для списка. –
Спасибо, да, Америка/Нью-Йорк, Чикаго и т. Д., Что мы действительно будем использовать, но я просто использовал US/Eastern в качестве примера. –