Django में टाइमज़ोन कैसे सेट करें?


139

मेरे django प्रोजेक्ट की settings.pyफ़ाइल में, मेरे पास यह पंक्ति है:

TIME_ZONE = 'UTC'

लेकिन मैं चाहता हूं कि मेरा ऐप UTC + 2 टाइमज़ोन में चले, इसलिए मैंने इसे बदल दिया

TIME_ZONE = 'UTC+2'

यह त्रुटि देता है ValueError: Incorrect timezone setting: UTC+2। ऐसा करने का सही तरीका क्या है?

धन्यवाद!

जवाबों:


229

यहां मान्य टाइमज़ोन की सूची दी गई है:

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

आप उपयोग कर सकते हैं

TIME_ZONE = 'Europe/Istanbul'

UTC + 02: 00 के लिए


3
वास्तव में यह केवल सही आधा वर्ष है जब डीएसटी चालू नहीं है। आप UTC + 2 वर्ष के दौर के लिए अफ्रीका / Mbabane का उपयोग कर सकते हैं
क्रिस SH

28

Tz डेटाबेस से सभी मान्य टाइमज़ोन नामों (आईडी) का एक सेट प्राप्त करने के लिए , आप पायथन में मॉड्यूल का उपयोगpytz कर सकते हैं :

>>> 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

वैध समयक्षेत्र मान लिनक्स और अन्य यूनिक्स प्रणालियों द्वारा उपयोग किए जाने वाले tz (टाइमज़ोन) डेटाबेस पर आधारित होते हैं। मान स्ट्रिंग्स (xsd: string) के रूप में " क्षेत्र / स्थान " हैं, जिसमें:

क्षेत्र एक महाद्वीप या महासागर का नाम है। वर्तमान में क्षेत्र में शामिल हैं:

  • अफ्रीका
  • अमेरिका (उत्तरी अमेरिका और दक्षिण अमेरिका दोनों)
  • अंटार्कटिका
  • आर्कटिक
  • एशिया
  • अटलांटिक
  • ऑस्ट्रेलिया
  • यूरोप
  • आदि (प्रशासनिक क्षेत्र। उदाहरण के लिए, "आदि / UTC" समन्वित सार्वभौमिक समय का प्रतिनिधित्व करता है।)
  • भारतीय
  • शांत

स्थान शहर, द्वीप या अन्य क्षेत्रीय नाम है।

ज़ोन के नाम और आउटपुट संक्षिप्त विवरण POSIX (पोर्टेबल ऑपरेटिंग सिस्टम इंटरफ़ेस) UNIX सम्मेलनों का पालन करते हैं, जो ग्रीनविच के पश्चिम में सकारात्मक (+) के संकेतों का उपयोग करता है और ग्रीनविच के पूर्व में नकारात्मक (-) संकेतों का संकेत देता है, जो कि आम तौर पर अपेक्षित के विपरीत है। उदाहरण के लिए, "आदि / जीएमटी + 4" यूटीसी (ग्रीनविच के पश्चिम में) के 4 घंटे के बजाय यूटीसी (समन्वित सार्वभौमिक समय) (ग्रीनविच के पूर्व) से 4 घंटे आगे है।

यहाँ एक सूची सभी वैध टाइमज़ोन है

आप निम्नानुसार अपनी सेटिंग में समय क्षेत्र बदल सकते हैं

LANGUAGE_CODE = 'en-us'

TIME_ZONE = 'Asia/Kolkata'

USE_I18N = True

USE_L10N = True

USE_TZ = True

2

मुझे यह सवाल अपने Django प्रोजेक्ट की settings.pyफ़ाइल में टाइमज़ोन को यूनाइटेड किंगडम में बदलने के लिए देख रहा था ।

Jz 'समाधान में tz डेटाबेस का उपयोग करके मुझे उत्तर मिला:

    TIME_ZONE = 'Europe/London'

1
  1. TIME_ZONE को अपने स्थानीय समय क्षेत्र में बदलें, और USE_TZ को 'सेटिंग' में सही रखें:

    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योर परियोजना पर निर्देशिका में इसे कॉपी और निकालें

  3. cmd में निकाले गए फ़ोल्डर में जाएं और चलाएं:

    python setup.py install
  4. TIME_ZONE = 'Etc/GMT+2' या देश का नाम

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.