2014-01-30 4 views
1

Я полностью в тупике, пытаясь сохранить введенное пользователем время и время. Это экономит, но делает какое-то изменение часового пояса. Я попытался установить USE_TZ = True и TIME_ZONE = 'UTC', но по какой-то нечетной причине Django сохраняет мое Datetime, но он вычитает 7 из часа. Например, если я вводил дату-время как '2014-01-29 16:56:00', когда я смотрю на базу данных, я вижу '2014-01-29 09: 56: 00-07'. Я прочитал документы часового пояса, но я совершенно смущен, почему это происходит. Любая помощь будет принята с благодарностью!Преобразование Django Datetime в DB save

+0

- это часовой пояс, установленный правильно в settings.py? – sirFunkenstine

+0

Я так считаю, у меня установлен параметр TIME_ZONE = 'UTC'. Я полагаю, что вопрос большой, будет ли Django всегда пытаться сделать какое-то изменение в часовом поясе при сохранении модели? – tmuzzin

ответ

1

Оказывается, что это не конкретно проблема с Django, но скорее вопрос с Postgres. Поскольку Django сообщает Postgres создать «временную метку с часовым поясом», Postgres правильно сохраняет метку времени и устанавливает смещение, когда вы запрашиваете эти данные непосредственно из Postgres, он отобразит вам временную метку с примененным смещением. Но когда данные возвращаются к Django, смещение удаляется, если вы не предоставили смещение. Кажется запутанным, не уверен, почему это делается именно так. Для моего конкретного случая использования я решил написать настраиваемое поле для создания «отметки времени без часового пояса». Джанго создает только «временную метку с часовым поясом», так что единственный способ обойти это заключается в следующем:

  1. изменить таблицу с SQL. Вероятно, это не лучший выбор при развертывании в нескольких средах при использовании Юга.

  2. Создайте настраиваемое поле, которое создает «временную метку без часового пояса». Это маршрут, на который я решил пойти. Надеюсь, это правильный маршрут.

Спасибо всем, кто пытался помочь мне понять это.

0

Джанго документы утверждают, что установка часового пояса по умолчанию:

TIME_ZONE = 'America/Chicago' 

Вот ссылка:

https://docs.djangoproject.com/en/dev/ref/settings/#time-zone

Они также заявляют несколько вариантов при установке TIME_ZONE. Один из вариантов, чтобы вручную установить его по имени, а вот ссылка на список TIME_ZONE имен выключить Джанго Док:

http://en.wikipedia.org/wiki/List_of_tz_database_time_zones

+0

Я установил настройку часового пояса на «UTC», но он все равно вычитает 7 из UTC, когда я сохраняю. В настоящее время я нахожусь в часовом поясе Денвера, который равен -7 от UTC, но нигде не установил Denver в моих настройках. Чикаго -6 от UTC, поэтому он определенно не захватывает дефолт где-то. – tmuzzin

+0

проверьте ссылку django docs выше. Может быть другой параметр, связанный с time_zone, который необходимо установить, чтобы он не был установлен по умолчанию в -7 часовом поясе, откуда вы находитесь. –

+0

Я ценю, что вы пытаетесь мне помочь, но я прочитал это дерьмо из этих документов, и ничто не приводит меня к тому, почему я получаю часовой пояс -7, когда мой часовой пояс установлен в UTC. – tmuzzin