How to set the timezone in Django?

后端 未结 8 884
萌比男神i
萌比男神i 2020-11-29 19:33

In my django project\'s settings.py file, I have this line :

TIME_ZONE = \'UTC\'

But I want my app to run in UTC+2 timezone, s

相关标签:
8条回答
  • 2020-11-29 19:59

    Here is the list of valid timezones:

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

    You can use

    TIME_ZONE = 'Europe/Istanbul'
    

    for UTC+02:00

    0 讨论(0)
  • 2020-11-29 20:07

    Valid timeZone values are based on the tz (timezone) database used by Linux and other Unix systems. The values are strings (xsd:string) in the form “Area/Location,” in which:

    Area is a continent or ocean name. Area currently includes:

    • Africa
    • America (both North America and South America)
    • Antarctica
    • Arctic
    • Asia
    • Atlantic
    • Australia
    • Europe
    • Etc (administrative zone. For example, “Etc/UTC” represents Coordinated Universal Time.)
    • Indian
    • Pacific

    Location is the city, island, or other regional name.

    The zone names and output abbreviations adhere to POSIX (portable operating system interface) UNIX conventions, which uses positive (+) signs west of Greenwich and negative (-) signs east of Greenwich, which is the opposite of what is generally expected. For example, “Etc/GMT+4” corresponds to 4 hours behind UTC (that is, west of Greenwich) rather than 4 hours ahead of UTC (Coordinated Universal Time) (east of Greenwich).

    Here is a list all valid timezones

    You can change time zone in your settings.py as follows

    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'Asia/Kolkata'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    0 讨论(0)
  • 2020-11-29 20:08
    1. Change the TIME_ZONE to your local time zone, and keep USE_TZ as True in 'setting.py':

      TIME_ZONE = 'Asia/Shanghai'

      USE_I18N = True

      USE_L10N = True

      USE_TZ = True

    2. This will write and store the datetime object as UTC to the backend database.

    3. Then use template tag to convert the UTC time in your frontend template as such:

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

    or use the template filters concisely:

                    <td> 
                        {% load tz %}
                        {{ message.log_date | localtime | time:'H:i:s' }}
                    </td>
    
    1. You could check more details in the official doc: Default time zone and current time zone

      When support for time zones is enabled, Django stores datetime information in UTC in the database, uses time-zone-aware datetime objects internally, and translates them to the end user’s time zone in templates and forms.

    0 讨论(0)
  • 2020-11-29 20:09

    To get a set of all valid timezone names (ids) from the tz database, you could use pytz module in 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'})
    
    0 讨论(0)
  • 2020-11-29 20:15
    1. download latest pytz file (pytz-2019.3.tar.gz) from:

      https://pypi.org/simple/pytz/
      
    2. copy and extract it to site_packages directory on yor project

    3. in cmd go to the extracted folder and run:

      python setup.py install
      
    4. TIME_ZONE = 'Etc/GMT+2' or country name

    0 讨论(0)
  • 2020-11-29 20:19

    Choose a valid timezone from the tzinfo database. They tend to take the form e.g. Africa/Gaborne and US/Eastern

    Find the one which matches the city nearest you, or the one which has your timezone, then set your value of TIME_ZONE to match.

    0 讨论(0)
提交回复
热议问题