Почему у pytz часовой пояс есть дополнительное смещение? [Дубликат]

Другим сценарием является то, что вы нанесли нулевой объект в тип значения . Например, код ниже:

object o = null;
DateTime d = (DateTime)o;

Он выкинет NullReferenceException в роли. В приведенном выше примере это кажется совершенно очевидным, но это может произойти в более «поздних связующих» сложных сценариях, где нулевой объект был возвращен из некоторого кода, которого вы не являетесь, и приведение, например, генерируется некоторой автоматической системой.

Одним из примеров этого является этот простой фрагмент привязки ASP.NET с элементом управления календарем:

" />

Здесь SelectedDate на самом деле является свойством - типа DateTime - типа Calendar Web Control, и привязка может отлично вернуть что-то null. Неявный генератор ASP.NET создаст кусок кода, который будет эквивалентен приведенному выше методу. И это поднимет NullReferenceException, что довольно сложно определить, потому что он лежит в сгенерированном ASP.NET коде, который компилирует отлично ...

22
задан compbugs 20 June 2011 в 13:16
поделиться

1 ответ

См.: http://bytes.com/topic/python/answers/676275-pytz-giving-incorrect-offset-timezone

В комментариях кто-то предлагает использовать tzinfo.localize() вместо конструктора datetime, что делает трюк.

>>> tz = timezone('Asia/Kolkata')
>>> dt = tz.localize(datetime.datetime(2011, 6, 20, 0, 0, 0, 0))
>>> dt
datetime.datetime(2011, 6, 20, 0, 0, tzinfo=<DstTzInfo 'Asia/Kolkata' IST+5:30:00 STD>)

UPDATE: Фактически на официальном сайте pytz указано, что вы всегда должны использовать localize или astimezone вместо передачи объекта часового пояса в datetime.datetime.

41
ответ дан Ferdinand Beyer 26 August 2018 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: