'Python / Django templates timezone issue
I am having the following issue, and cant figure out what i am missing here.
I have enabled the Timezone in the settings.py
Settings.py
TIME_ZONE = 'America/Chicago'
USE_TZ = True
Use-case
Now, when I have created an object at 3.15pm (Local time), and i get the following date stored in my created_at
field in database.
created_at = models.DateTimeField(auto_now_add=True)
2014-12-12 11:03:48
When i render that date in my templates i get the following value.
{{ image.created_at }}
= >
Dec. 12, 2014, 5:03 a.m.
TEST CASE
from datetime import datetime
from dateutil.tz import tzutc, tzlocal
utc = datetime.now(tzutc())
print('UTC: ' + str(utc))
local = utc.astimezone(tzlocal())
print('Local: ' + str(local))
I am getting correct datetime here. And when i use myobject.created_at.astimezone(tzlocal())
it also returns correct. but its when in Templates i get 1 hour ahead time. WHY? i tried both |local
filter also but no use
What am I missing?
Solution 1:[1]
Add the below snippet to the base.html
{% load tz %}
{% timezone "Asia/Kolkata" %}
<All content goes here>
{% endtimezone %}
Inherit this to all templates. Everything render in 'Asia/Kolkata' time zone
Solution 2:[2]
Django always stores data in UTC with timezone aware info. Your settings.py is for America/Chicago therefore template renders it accordingly.
You can use timezone filters in your template to always show local time {{ image.created_at | localtime }}
. At template start do {% load tz %}
timezone tag library.
I.e.
{% load tz %}
<!-- template -->
{{ image.created_at | localtime }}
<!-- more template -->
Solution 3:[3]
From the docs:
localtime
Forces conversion of a single value to the current time zone.
For example:
{% load tz %}
{{ value|localtime }}
Solution 4:[4]
The TIME_ZONE
setting is for the default (usually sever location timezone) to display time information related to the logged user you should read the documentation here
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | gdvalderrama |
Solution 2 | aydow |
Solution 3 | CowGoat |
Solution 4 | sax |