summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/utils/dateformat.py4
-rw-r--r--docs/ref/templates/builtins.txt2
-rw-r--r--tests/utils_tests/test_dateformat.py13
3 files changed, 16 insertions, 3 deletions
diff --git a/django/utils/dateformat.py b/django/utils/dateformat.py
index afd36d79e0..c4d9d035e4 100644
--- a/django/utils/dateformat.py
+++ b/django/utils/dateformat.py
@@ -325,8 +325,8 @@ class DateFormat(TimeFormat):
return self.data.isocalendar()[1]
def y(self):
- "Year, 2 digits; e.g. '99'"
- return str(self.data.year)[2:]
+ """Year, 2 digits with leading zeros; e.g. '99'."""
+ return '%02d' % (self.data.year % 100)
def Y(self):
"Year, 4 digits; e.g. '1999'"
diff --git a/docs/ref/templates/builtins.txt b/docs/ref/templates/builtins.txt
index 1c79f3a2f5..17528cea18 100644
--- a/docs/ref/templates/builtins.txt
+++ b/docs/ref/templates/builtins.txt
@@ -1379,7 +1379,7 @@ Format character Description Example output
style. Proprietary extension.
``t`` Number of days in the given month. ``28`` to ``31``
**Year**
-``y`` Year, 2 digits. ``'99'``
+``y`` Year, 2 digits with leading zeros. ``'00'`` to ``'99'``
``Y`` Year, 4 digits. ``'1999'``
``L`` Boolean for whether it's a leap year. ``True`` or ``False``
``o`` ISO-8601 week-numbering year, ``'1999'``
diff --git a/tests/utils_tests/test_dateformat.py b/tests/utils_tests/test_dateformat.py
index d050ac4352..5eb166e2bd 100644
--- a/tests/utils_tests/test_dateformat.py
+++ b/tests/utils_tests/test_dateformat.py
@@ -165,3 +165,16 @@ class DateFormatTests(SimpleTestCase):
dateformat.format(dt, 'r'),
'Sun, 08 Jul 1979 22:00:00 +0100',
)
+
+ def test_year_before_1000(self):
+ tests = [
+ (476, '76'),
+ (42, '42'),
+ (4, '04'),
+ ]
+ for year, expected_date in tests:
+ with self.subTest(year=year):
+ self.assertEqual(
+ dateformat.format(datetime(year, 9, 8, 5, 0), 'y'),
+ expected_date,
+ )