diff --git a/django/utils/timesince.py b/django/utils/timesince.py index 0b94d89bc6..e69c45c8c1 100644 --- a/django/utils/timesince.py +++ b/django/utils/timesince.py @@ -24,7 +24,7 @@ def timesince(d, now=None): else: t = time.localtime() if d.tzinfo: - tz = LocalTimezone() + tz = LocalTimezone(d) else: tz = None now = datetime.datetime(t[0], t[1], t[2], t[3], t[4], t[5], tzinfo=tz) diff --git a/tests/othertests/templates.py b/tests/othertests/templates.py index 6ad97d8f80..963c9ed8e7 100644 --- a/tests/othertests/templates.py +++ b/tests/othertests/templates.py @@ -4,6 +4,7 @@ from django.conf import settings from django import template from django.template import loader from django.utils.translation import activate, deactivate, install +from django.utils.tzinfo import LocalTimezone from datetime import datetime, timedelta import traceback @@ -57,8 +58,9 @@ class OtherClass: def method(self): return "OtherClass.method" -# NOW used by timesince tag tests. +# NOW and NOW_tz are used by timesince tag tests. NOW = datetime.now() +NOW_tz = datetime.now(LocalTimezone(datetime.now())) # SYNTAX -- # 'template_name': ('template contents', 'context dict', 'expected string output' or Exception class) @@ -545,6 +547,9 @@ TEMPLATE_TESTS = { 'timesince04' : ('{{ a|timesince:b }}', {'a':NOW + timedelta(days=2), 'b':NOW + timedelta(days=1)}, '1 day'), 'timesince05' : ('{{ a|timesince:b }}', {'a':NOW + timedelta(days=2), 'b':NOW + timedelta(days=2)}, '0 minutes'), + # Check that timezone is respected + 'timesince06' : ('{{ a|timesince:b }}', {'a':NOW_tz + timedelta(hours=8), 'b':NOW_tz}, '8 hours'), + ### TIMEUNTIL TAG ################################################## # Default compare with datetime.now() 'timeuntil01' : ('{{ a|timeuntil }}', {'a':datetime.now()}, '0 minutes'),