How to add Indian Standard Time (IST) in Django?
PythonDjangoPython Problem Overview
We want to get the current time in India in our Django project. In settings.py, UTC is there by default. How do we change it to IST?
Python Solutions
Solution 1 - Python
Change the field TIME_ZONE
in the settings.py
.
For the Indian standard time you will need:
TIME_ZONE = 'Asia/Kolkata'
For more information about the TIME_ZONE in Django you can see: https://docs.djangoproject.com/en/dev/ref/settings/#time-zone
Solution 2 - Python
check [django_timezones](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones "django timezone")! this may help others too it consists of all other timezones for references
Solution 3 - Python
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = True
The above settings should work
Solution 4 - Python
Use Below settings its worked for me. TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = False
Solution 5 - Python
All the solutions given above are working.
see the code i have used to get my timezone. my timezone is Indian standard time zone.
https://docs.djangoproject.com/en/3.0/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Kolkata'
USE_I18N = True
USE_L10N = True
USE_TZ = True
Solution 6 - Python
In general, Universal Time(UTC) based on the mean sidereal time as measured in Greenwich, England. It's also approximately equal to mean solar time from Greenwich. If Daylight Saving Time is in effect in the time zone, one must add 1 hour to the above standard times.
Django got all these timezone support, The django.utils timezone module, just returns datetime based on the USE TZ
setting, they are simply datetime objects with timezone 'awareness'.
For IST(India Standard Time), which is UTC + 5:30, set TIME_ZONE = 'Asia/Kolkata'
and USE_TZ = True
, also USE_I18N = True, USE_L10N = True
, which are Internationalization and localization settings.
For a reference,
from django.utils import timezone
import datetime
print(timezone.now()) # The UTC time
print(timezone.localtime()) # timezone specified time,if timezone is UTC, it is same as above
print(datetime.datetime.now()) # default localmachine time
# output
2020-12-11 09:13:32.430605+00:00
2020-12-11 14:43:32.430605+05:30 # IST is UTC+5:30
2020-12-11 14:43:32.510659
refer timezone settings in django docs for more details.
Solution 7 - Python
Change your settings.py
to:
TIME_ZONE = 'Asia/Calcutta'
USE_I18N = True
USE_L10N = True
USE_TZ = False
This should work.
For more information about the TIME_ZONE in Django you can see: https://docs.djangoproject.com/en/dev/ref/settings/#time-zone
Solution 8 - Python
Modify setting.py and change the time zone to TIME_ZONE = 'Asia/Kolkata'
Solution 9 - Python
Keep TIME_ZONE = 'Asia/Kolkata' in settings.py file and restart the service from where you are accessing the timezone (server or shell). In my case, I restarted the python shell in which I was working and it worked fine for me.
Solution 10 - Python
Simple Change TIME ZONE from 'UTC' to 'Asia/Kolkata' remember K and A is Capital here.
Solution 11 - Python
Adding to Jon Answer, If timezone.now()
still not working after changing the TIME_ZONE='Asia/Kolkata'
.
Instead of timezone.now()
you can use timezone.localtime()
.
Hope it solves.. :)
Solution 12 - Python
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Calcutta'
USE_I18N = True
USE_L10N = True
USE_TZ = True
This should work.
Solution 13 - Python
Django stores timestamp so if we just change the TIME_ZONE
variable Django will handle rest.
TIME_ZONE = 'Asia/Kolkata'
Solution 14 - Python
change TIME_ZONE in settings.py.
TIME_ZONE = 'Asia/Colombo' # 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
to check it is working properly.
python manage.py shell
from django.utils import timezone
timezone.localtime(timezone.now())
then just check your time :)
here is List of tz database time zones as per wiki.