newformat.append(Zreplace)
# Note that datetime(1000, 1, 1).strftime('%G') == '1000' so
# year 1000 for %G can go on the fast path.
- elif ((ch in 'YG' or ch in 'FC') and
- object.year < 1000 and _need_normalize_century()):
+ elif (ch in 'YGFC' and timetuple[0] < 1000 and
+ _need_normalize_century()):
if ch == 'G':
year = int(_time.strftime("%G", timetuple))
else:
- year = object.year
+ year = timetuple[0]
if ch == 'C':
push('{:02}'.format(year // 100))
else:
self.assertEqual(t.strftime('\0'*1000), '\0'*1000)
self.assertEqual(t.strftime('\0%I%p%Z\0%X'), f'\0{s1}\0{s2}')
self.assertEqual(t.strftime('%I%p%Z\0%X\0'), f'{s1}\0{s2}\0')
+ # gh-152305: the year directives must not raise on a time.
+ for directive, expected in (('%Y', '1900'), ('%G', '1900'),
+ ('%C', '19'), ('%F', '1900-01-01')):
+ with self.subTest(directive=directive):
+ self.assertEqual(t.strftime(directive), expected)
def test_format(self):
t = self.theclass(1, 2, 3, 4)