Django - Редактирование настроек Часовой пояс по умолчанию

Сейчас я прохожу процесс информирования о часовом поясе приложения django. Первоначально параметр TIME_ZONE был установлен на "America / Los_Angeles", но я решил, что, вероятно, более стандартно сделать его "UTC".

Я обнаружил некоторое непреднамеренное поведение, когда рендерил datetime на веб-страницу в Javascript, например (start_date - это наивный datetime, который я определил ранее в представлении):

представление django: cal_start_date = time.mktime(start_date.timetuple())

js: startDate = new Date(response.cal_start_date * 1000)

В зависимости от TIME_ZONE, которое я установил в settings.py, я получаю другую метку времени для cal_start_date, что понятно: метод time.mktime возвращает число с плавающей запятой, представляющее количество секунд с начала эпохи (01.01.1970). Однако количество секунд с начала эпохи зависит от часового пояса, о котором мы говорим. Я считаю, что time.mktime автоматически принимает параметр TIME_ZONE как тот, который нужно использовать для этой справки, верно?

В общем, не является ли изменение настройки django TIME_ZONE плохой практикой?


person tzenderman    schedule 30.10.2013    source источник


Ответы (1)


Взгляните на этот ответ:

time.mktime () предполагает, что переданный кортеж находится в местном времени. , calendar.timegm () предполагает, что это время в GMT / UTC. В зависимости от интерпретации кортеж представляет разное время, поэтому функции возвращают разные значения (секунды с начала эпохи основаны на UTC).

Разница между значениями должна быть равна смещению часового пояса вашего местного часового пояса.

Я также рекомендую вам убедиться, что USE_TZ = True в вашем settings.py

person ramusus    schedule 02.11.2014