Dalam settings.py
file proyek django saya , saya memiliki baris ini:
TIME_ZONE = 'UTC'
Tapi saya ingin aplikasi saya berjalan dalam zona waktu UTC + 2, jadi saya mengubahnya menjadi
TIME_ZONE = 'UTC+2'
Ini memberikan kesalahan ValueError: Incorrect timezone setting: UTC+2
. Apa cara yang benar untuk melakukan ini?
Terima kasih!
Untuk mendapatkan satu set semua nama zona waktu (id) yang valid dari database tz , Anda dapat menggunakan
pytz
modul dengan 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'})
sumber
pytz.common_timezones
.Pilih zona waktu yang valid dari database tzinfo . Mereka cenderung mengambil bentuk misalnya
Africa/Gaborne
danUS/Eastern
Temukan kota yang cocok dengan kota terdekat Anda, atau kota yang memiliki zona waktu Anda, lalu tetapkan nilai Anda
TIME_ZONE
untuk mencocokkan.sumber
Nilai timeZone yang valid didasarkan pada database tz (zona waktu) yang digunakan oleh Linux dan sistem Unix lainnya. Nilainya adalah string (xsd: string) dalam bentuk " Area / Lokasi ", di mana:
Area adalah nama benua atau samudra. Area saat ini meliputi:
Lokasi adalah kota, pulau, atau nama daerah lainnya.
Nama zona dan singkatan keluaran mengikuti konvensi UNIX POSIX (antarmuka sistem operasi portabel), yang menggunakan tanda positif (+) di sebelah barat Greenwich dan tanda negatif (-) di sebelah timur Greenwich, yang merupakan kebalikan dari apa yang diharapkan secara umum. Misalnya, "Dll / GMT + 4" sesuai dengan 4 jam di belakang UTC (yaitu, sebelah barat Greenwich) bukan 4 jam lebih awal dari UTC (Waktu Universal Terkoordinasi) (timur Greenwich).
Berikut adalah daftar semua zona waktu yang valid
Anda dapat mengubah zona waktu di settings.py Anda sebagai berikut
LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Asia/Kolkata' USE_I18N = True USE_L10N = True USE_TZ = True
sumber
Saya menemukan pertanyaan ini mencari untuk mengubah zona waktu dalam
settings.py
berkas proyek Django saya ke Inggris.Menggunakan database tz dalam solusi jfs saya menemukan jawabannya:
TIME_ZONE = 'Europe/London'
sumber
Ubah TIME_ZONE ke zona waktu lokal Anda, dan pertahankan USE_TZ sebagai True di 'setting.py':
TIME_ZONE = 'Asia / Shanghai'
USE_I18N = Benar
USE_L10N = Benar
USE_TZ = Benar
Ini akan menulis dan menyimpan objek datetime sebagai UTC ke database backend.
Kemudian gunakan tag template untuk mengonversi waktu UTC di template frontend Anda seperti:
<td> {% load tz %} {% get_current_timezone as tz %} {% timezone tz %} {{ message.log_date | time:'H:i:s' }} {% endtimezone %} </td>
atau gunakan filter template secara singkat:
<td> {% load tz %} {{ message.log_date | localtime | time:'H:i:s' }} </td>
Anda dapat memeriksa lebih detail di dokumen resmi: Zona waktu default dan zona waktu saat ini
Ketika dukungan untuk zona waktu diaktifkan, Django menyimpan informasi datetime dalam UTC dalam database, menggunakan objek datetime sadar-zona secara internal, dan menerjemahkannya ke zona waktu pengguna akhir dalam templat dan formulir.
sumber
Solusi universal, berdasarkan pada dukungan nama TZ Django :
UTC-2 = 'Etc/GMT+2' UTC-1 = 'Etc/GMT+1' UTC = 'Etc/GMT+0' UTC+1 = 'Etc/GMT-1' UTC+2 = 'Etc/GMT-2'
+/- sengaja dialihkan.
sumber
unduh file pytz terbaru (pytz-2019.3.tar.gz) dari:
salin dan ekstrak ke
site_packages
direktori di proyek Andadi cmd, buka folder yang diekstrak dan jalankan:
TIME_ZONE = 'Etc/GMT+2'
atau nama negarasumber