Як встановити часовий пояс у Django?


139

У settings.pyфайлі мого проекту django є такий рядок:

TIME_ZONE = 'UTC'

Але я хочу, щоб моя програма запускалася в часовому поясі UTC + 2, тому я змінив її на

TIME_ZONE = 'UTC+2'

Це дає помилку ValueError: Incorrect timezone setting: UTC+2. Який правильний спосіб зробити це?

Дякую!

Відповіді:



28

Щоб отримати набір усіх дійсних імен часових поясів (ідентифікаторів) з бази даних tz , ви можете використовувати pytzмодуль в Python :

>>> import pytz # $ pip install pytz
>>> pytz.all_timezones_set
LazySet({'Africa/Abidjan',
         'Africa/Accra',
         'Africa/Addis_Ababa',
         'Africa/Algiers',
         'Africa/Asmara',
         'Africa/Asmera',
         ...
         'UTC',
         'Universal',
         'W-SU',
         'WET',
         'Zulu'})

1
Варто також зазначити, що існує коротший список часових поясів, не враховуючи застарілих pytz.common_timezones.
vmonteco

11

Виберіть дійсний часовий пояс із бази даних tzinfo . Вони, як правило, приймають форму, наприкладAfrica/Gaborne іUS/Eastern

Знайдіть місто, яке відповідає найближчому до вас місту, або місто, яке має ваш часовий пояс, а потім встановіть значення, TIME_ZONEяке відповідає вашому .


4

Дійсні значення timeZone базуються на базі даних tz (часовий пояс), що використовується Linux та іншими системами Unix. Значення - це рядки (xsd: string) у формі " Площа / місцеположення ", в якій:

Площа - назва континенту чи океану. В даний час область включає:

  • Африка
  • Америка (і Північна, і Південна Америка)
  • Антарктида
  • Арктика
  • Азії
  • Атлантичний
  • Австралія
  • Європа
  • Etc (адміністративна зона. Наприклад, "Etc / UTC" являє собою координований універсальний час.)
  • Індійська
  • Тихоокеанський

Розташування - місто, острів чи інша регіональна назва.

Назви зон та абревіатури виведення дотримуються POSIX (інтерфейс портативної операційної системи) UNIX-конвенцій, який використовує позитивні (+) знаки на захід від Грінвіча та негативні (-) знаки на схід від Грінвічу, що є протилежним до очікуваного. Наприклад, "Etc / GMT + 4" відповідає на 4 години поза UTC (тобто на захід від Грінвічу), а не на 4 години попереду UTC (Універсальний координований час) (на схід від Грінвіч).

Ось список усіх дійсних часових поясів

Ви можете змінити часовий пояс у своєму settings.py наступним чином

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Kolkata'

USE_I18N = True

USE_L10N = True

USE_TZ = True

2

Я знайшов це запитання, щоб змінити часовий пояс у settings.pyфайлі мого проекту Django до Великобританії.

Використовуючи базу даних tz у рішенні jfs, я знайшов відповідь:

    TIME_ZONE = 'Europe/London'

1
  1. Змініть TIME_ZONE у вашому локальному часовому поясі та збережіть USE_TZ як "True" у "settings.py":

    TIME_ZONE = 'Азія / Шанхай'

    USE_I18N = Істинно

    USE_L10N = Істинно

    USE_TZ = Істинно

  2. Це дозволить записати та зберегти об’єкт дати як UTC у резервній базі даних.

  3. Потім використовуйте тег шаблону для перетворення часу UTC у вашому шаблоні фронту:

                <td> 
                    {% load tz %}
                    {% get_current_timezone as tz %}
                    {% timezone tz %}
                        {{ message.log_date | time:'H:i:s' }}
                    {% endtimezone %} 
                </td>

або використовувати фільтри шаблонів стисло:

                <td> 
                    {% load tz %}
                    {{ message.log_date | localtime | time:'H:i:s' }}
                </td>
  1. Ви можете дізнатися більше деталей в офіційному документі: часовий пояс за замовчуванням та поточний часовий пояс

    Коли ввімкнено підтримку часових поясів, Django зберігає інформацію про дату в UTC у базі даних, використовує внутрішньо відомі часові пояси об'єкти дати та переводить їх у часовий пояс кінцевого користувача у шаблони та форми.


1

Універсальне рішення, засноване на підтримці імені Django TZ :

UTC-2 = 'Etc/GMT+2'
UTC-1 = 'Etc/GMT+1'
UTC = 'Etc/GMT+0'
UTC+1 = 'Etc/GMT-1'
UTC+2 = 'Etc/GMT-2'

+/- навмисно перемикається.


0
  1. завантажити останній файл pytz (pytz-2019.3.tar.gz) з:

    https://pypi.org/simple/pytz/
  2. скопіюйте та витягніть його в site_packagesкаталог проекту yor

  3. у cmd перейдіть до витягнутої папки та запустіть:

    python setup.py install
  4. TIME_ZONE = 'Etc/GMT+2' або назва країни

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.