How to set the timezone in Django?
Question:
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:
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
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.
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'})
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'
-
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.
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
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.
-
download latest pytz file (pytz-2019.3.tar.gz) from:
https://pypi.org/simple/pytz/
-
copy and extract it to site_packages
directory on yor project
-
in cmd go to the extracted folder and run:
python setup.py install
-
TIME_ZONE = 'Etc/GMT+2'
or country name
Use Area/Location format properly.
Example:
TIME_ZONE = 'Asia/Kolkata'
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
Add Preferred TIME_ZONE and set USE_TZ to False like following
- TIME_ZONE = ‘Asia/Kolkata’
- USE_TZ = False
Hope it will work.
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)
For Poland:
‘TIME_ZONE = 'Europe/Warsaw'
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!
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
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.
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'})
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'
-
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.
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
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.
-
download latest pytz file (pytz-2019.3.tar.gz) from:
https://pypi.org/simple/pytz/
-
copy and extract it to
site_packages
directory on yor project -
in cmd go to the extracted folder and run:
python setup.py install
-
TIME_ZONE = 'Etc/GMT+2'
or country name
Use Area/Location format properly.
Example:
TIME_ZONE = 'Asia/Kolkata'
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
Add Preferred TIME_ZONE and set USE_TZ to False like following
- TIME_ZONE = ‘Asia/Kolkata’
- USE_TZ = False
Hope it will work.
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)
For Poland:
‘TIME_ZONE = 'Europe/Warsaw'