W settings.py
pliku mojego projektu django mam następującą linię:
TIME_ZONE = 'UTC'
Ale chcę, aby moja aplikacja działała w strefie czasowej UTC + 2, więc zmieniłem ją na
TIME_ZONE = 'UTC+2'
Daje błąd ValueError: Incorrect timezone setting: UTC+2
. Jak to zrobić we właściwy sposób?
Dzięki!
Aby uzyskać zestaw wszystkich prawidłowych nazw stref czasowych (identyfikatorów) z bazy danych tz , możesz użyć
pytz
modułu w Pythonie :źródło
pytz.common_timezones
.Wybierz prawidłową strefę czasową z bazy danych tzinfo . Mają one zwykle postać np
Africa/Gaborne
IUS/Eastern
Znajdź to, które pasuje do najbliższego miasta lub tego, które ma Twoją strefę czasową, a następnie ustaw wartość
TIME_ZONE
na.źródło
Prawidłowe wartości timeZone są oparte na bazie danych tz (strefa czasowa) używanej przez Linuksa i inne systemy Unix. Wartości są ciągami (xsd: ciąg) w postaci „ Obszar / lokalizacja ”, w których:
Obszar to nazwa kontynentu lub oceanu. Obszar obecnie obejmuje:
Lokalizacja to miasto, wyspa lub inna nazwa regionalna.
Nazwy stref i skróty danych wyjściowych są zgodne z konwencją UNIX POSIX (interfejs przenośnego systemu operacyjnego), która używa znaków dodatnich (+) na zachód od Greenwich i znaków ujemnych (-) na wschód od Greenwich, co jest przeciwieństwem tego, czego się ogólnie oczekuje. Na przykład „Etc / GMT + 4” oznacza 4 godziny za czasem UTC (to znaczy na zachód od Greenwich), a nie 4 godziny przed UTC (uniwersalny czas koordynowany) (na wschód od Greenwich).
Oto lista wszystkich prawidłowych stref czasowych
Możesz zmienić strefę czasową w swoim settings.py w następujący sposób
źródło
Znalazłem to pytanie, próbując zmienić strefę czasową w
settings.py
pliku mojego projektu Django na Wielką Brytanię.Korzystając z bazy danych tz w rozwiązaniu jfs znalazłem odpowiedź:
źródło
Zmień TIME_ZONE na lokalną strefę czasową i zachowaj USE_TZ jako True w „setting.py”:
TIME_ZONE = 'Azja / Szanghaj'
USE_I18N = True
USE_L10N = True
USE_TZ = True
Spowoduje to zapisanie i przechowywanie obiektu datetime jako UTC w wewnętrznej bazie danych.
Następnie użyj tagu szablonu, aby przekonwertować czas UTC w szablonie interfejsu użytkownika w następujący sposób:
lub zwięźle użyj filtrów szablonów :
Możesz sprawdzić więcej szczegółów w oficjalnym dokumencie: Domyślna strefa czasowa i aktualna strefa czasowa
Gdy obsługa stref czasowych jest włączona, Django przechowuje informacje o dacie i godzinie w bazie danych w formacie UTC, wykorzystuje wewnętrznie obiekty daty i godziny uwzględniające strefy czasowe i tłumaczy je na strefę czasową użytkownika końcowego w szablonach i formularzach.
źródło
Uniwersalne rozwiązanie oparte na obsłudze nazw TZ Django :
+/- jest celowo przełączane.
źródło
pobierz najnowszy plik pytz (pytz-2019.3.tar.gz) z:
skopiuj i wypakuj go do
site_packages
katalogu w swoim projekciew cmd przejdź do wyodrębnionego folderu i uruchom:
TIME_ZONE = 'Etc/GMT+2'
lub nazwa krajuźródło