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, so I changed it to
TIME_ZONE = 'UTC+2'
It gives the error ValueError: Incorrect timezone setting: UTC+2. What is the correct way of doing this?
Thanks!
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
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
Method 2
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'})
Method 3
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.
Method 4
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
Method 5
This works just fine for me (I am still testing the app locally).
In settings.py file type:
LANGUAGE_CODE = 'en-us' TIME_ZONE = 'Asia/Beirut' USE_I18N = True USE_L10N = True USE_TZ = False
#use your own TIME_ZONE:
https://gist.github.com/heyalexej/8bf688fd67d7199be4a1682b3eec7568
Method 6
Universal solution, based on Django’s TZ name support:
UTC-2 = 'Etc/GMT+2' UTC-1 = 'Etc/GMT+1' UTC = 'Etc/GMT+0' UTC+1 = 'Etc/GMT-1' UTC+2 = 'Etc/GMT-2'
+/- is intentionally switched.
Method 7
-
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
- This will write and store the datetime object as UTC to the backend database.
-
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>
-
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.
Method 8
I found this question looking to change the timezone in my Django project’s settings.py file to the United Kingdom.
Using the tz database in jfs’ solution I found the answer:
TIME_ZONE = 'Europe/London'
Method 9
Here is the list of valid timezones:
http://en.wikipedia.org/wiki/List_of_tz_database_time_zones
You can use the Time zone For Dhaka
TIME_ZONE = 'Asia/Dhaka'
for UTC+06:00 (Dhaka or Astana)
Method 10
-
download latest pytz file (pytz-2019.3.tar.gz) from:
https://pypi.org/simple/pytz/
-
copy and extract it to
site_packagesdirectory on yor project -
in cmd go to the extracted folder and run:
python setup.py install
-
TIME_ZONE = 'Etc/GMT+2'or country name
Method 11
Use Area/Location format properly.
Example:
TIME_ZONE = 'Asia/Kolkata'
Method 12
Add Preferred TIME_ZONE and set USE_TZ to False like following
- TIME_ZONE = ‘Asia/Kolkata’
- USE_TZ = False
Hope it will work.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0