Opened 9 years ago
Last modified 9 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?