Opened 8 years ago
Last modified 8 years ago
#26711 closed Bug
Aware datetimes rendered through templates are changed to TIME_ZONE — at Initial Version
Reported by: | Antonis Christofides | Owned by: | nobody |
---|---|---|---|
Component: | Template system | Version: | 1.9 |
Severity: | Normal | Keywords: | timezone |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Start a new project with django-admin startproject
, then start a shell with ./manage.py shell
and execute these commands:
from datetime import datetime import sys from django.template import Context, Template import pytz # Set adatetime to 2015-10-03 02:00 EEST (+0300) athens = pytz.timezone('Europe/Athens') adatetime = athens.localize(datetime(2015, 10, 3, 2, 0)) # Render that date in a template template = Template( 'Take note of this date: {{ adatetime|date:"Y-m-d H:i e (O)" }}') result = template.render(Context({'adatetime': adatetime})) sys.stdout.write(result)
Result: 2015-10-02 23:00 UTC (+0000)
Expected: 2015-10-03 02:00 EEST (+0300)
These are actually the same time displayed in different time zones. Django chooses to display the time in the TIME_ZONE
setting. I thought it would be more logical to leave an aware datetime untouched.
If this behavior is correct: How am I going to do what I want, which is to render the aware datetime in its own time zone?