'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