The built-in date filter DOES support timezone if passed a datetime
object, so this is often used as a workaround. However, when attempting to
use the DATE_FORMAT and TIME_FORMAT settings in conjunction with naked {{
value|date }} and {{ value|time }} template expressions to get consistent
date and time formatting across a site, the lack of timezone support in
the time filter is a problem if timezone information needs to be displayed
after the time.
There is a discussion of this issue on the Django Developers list:
https://groups.google.com/forum/#!topic/django-developers/r-7dMZROTs4
The consensus so far seems to be to modify the
django.utils.dateformat.TimeFormat class so that it has similar timezone
support for datetime objects as does the DateFormat class in the same
module. Since DateFormat is a subclass of TimeFormat, it is likely that
the timezone support methods can just be moved from DateFormat into
TimeFormat, along with the __init__() method.
Some modification to the methods will need to occur to account for the
case where a time object (not a datetime object) is passed to a filter
with a timezone-related format specifier. It was decided in the discussion
that the behavior in this case should be that the format method will
return an empty string.
--
Ticket URL: <https://code.djangoproject.com/ticket/20693>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* status: new => assigned
* needs_better_patch: => 0
* owner: nobody => wsmith323
* needs_tests: => 0
* needs_docs: => 0
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:1>
Comment (by wsmith323):
I have the code modified. I'm working on adding tests and tweaking the
documentation.
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:2>
Comment (by wsmith323):
I've added tests and have them all passing under SQLite. I don't think I
need to test under additional dbs, since this is primarily a template
change.
However, since the generic django time formatting behavior is changing
slightly (assumption on my part given the location of my changes), I
suppose it is possible that there might be some weird db-specific
regression or subtle unexpected behavior change that will bite folks.
I've submitted https://github.com/django/django/pull/1327.
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:3>
* has_patch: 0 => 1
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:4>
* stage: Unreviewed => Accepted
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:5>
* version: 1.5 => master
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:6>
* stage: Accepted => Ready for checkin
Comment:
Ready for checkin/final review by core dev.
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:7>
Comment (by anonymous):
I have re-based my local branch so the pull-request looks clean against
the current master. Not sure what else to do.
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:8>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"dd3a883894a219bc6c69e556c694734ab82b33e9"]:
{{{
#!CommitTicketReference repository=""
revision="dd3a883894a219bc6c69e556c694734ab82b33e9"
Fixed #20693 -- Add timezone support to built-in time filter.
Modified django.utils.dateformat module, moving __init__() method and
timezone-related format methods from DateFormat class to TimeFormat
base class. Modified timezone-related format methods to return an
empty string when timezone is inappropriate for input value.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:9>
Comment (by Ramiro Morales <cramm0@…>):
In [changeset:"bebb449ac334d7365a015b34b9c894dc4bf63f7f"]:
{{{
#!CommitTicketReference repository=""
revision="bebb449ac334d7365a015b34b9c894dc4bf63f7f"
Added docs for changes in commit dd3a883894.
Refs #20693.
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/20693#comment:10>