Как лучше всего отображать точное время и дату в Джанго? - PullRequest
3 голосов
/ 04 мая 2009

В настоящее время мой метод включает создание процессора контекста. который затем включен по всему миру. Тем не менее, я заметил, что у меня есть проблемы с учетом перехода на летнее время. я живу за пределами США, кстати, и мой сервер находится в США, но его часовой пояс установлен на мой. Однако так как мы не учитываем летнее время, это всегда на час впереди моего местного время.

Есть идеи, как объяснить это? Я использовал Timedelta -1 в прошлом, но почему-то я не чувствую, что это правильно решение.

Ответы [ 5 ]

5 голосов
/ 04 мая 2009

Часовой пояс, установленный на сервере, не должен иметь значения в приложении Django. Django вернет время в зависимости от того, какая переменная TIME_ZONE установлена ​​в вашем settings.py, а не от того, что вы установили на сервере. Например, один сервер может обслуживать несколько сайтов на платформе Django, каждый с отдельной настройкой часового пояса.

См .: http://docs.djangoproject.com/en/dev/ref/settings/#time-zone.

Просто убедитесь, что для переменной TIME_ZONE задано имя Zoneinfo (т. Е. Америка / Белиз), а не просто GMT-6, потому что это не учитывает переход на летнее время. Используя имя Zoneinfo, Django вернет версию времени с учетом перехода на летнее время. Так что настройте это правильно, и вы сможете получить часовой пояс в своем приложении Django.

{% now h:ia %}

Это вернет время в таком формате, как 9:30 утра.

1 голос
/ 31 марта 2012

С Django 1.4 теперь вы можете использовать django.utils.timezone, чтобы установить текущий часовой пояс для данного пользователя

1 голос
/ 04 мая 2009

Если сервер настроен на ваш часовой пояс, и вы хотите отображать время в своем часовом поясе, вы должны просто иметь возможность использовать что-то вроде:

{% now M d, Y h-ia %}

Чтобы дать что-то вроде: 23 января 2009 г. 9:21 утра. 1004

См. http://docs.djangoproject.com/en/dev/ref/templates/builtins/

0 голосов
/ 04 мая 2009

Если вас интересует только отображение даты и времени на стороне клиента, вы можете просто использовать Javascript, который будет использовать дату и время клиентского компьютера.

Могут быть причины, по которым вы не хотите этого делать, но я все равно решил выбросить это.

0 голосов
/ 04 мая 2009

Звучит так, будто время установлено на ваше время, а часовой пояс - нет.

Если это сервер Linux, часовой пояс контролируется файлом /etc/localtime

На самом деле это символическая ссылка на один из файлов часовых поясов в /usr/share/zoneinfo. По умолчанию это, вероятно, что-то вроде /usr/share/zoneinfo/America/New_York, но вы можете изменить его на /usr/share/zoneinfo/America/Belize *, выполнив следующие действия:

ln -sf /usr/share/zoneinfo/America/Belize /etc/localtime

Местоположение будет немного другим, если вы используете другую * nix ОС. Например, у Solaris есть файлы часовых поясов в /usr/share/lib/zoneinfo

Предполагается, что у вас есть root-доступ на компьютере, поскольку у вас есть доступ для изменения системных часов.

* Ваше местоположение указано в вашем профиле как Белиз, на случай, если вам интересно, откуда я это взял.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...