Fixed #32149 -- Added support for years < 1000 to DateFormat.y().

This commit is contained in:
Sam 2020-10-27 11:12:14 +07:00 committed by Mariusz Felisiak
parent c448e614c6
commit 895f6e4992
3 changed files with 16 additions and 3 deletions

View File

@ -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'"

View File

@ -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'``

View File

@ -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,
)