From 36a8301ce2ab1389d69821fbceb7700531fd03dc Mon Sep 17 00:00:00 2001 From: Mariatta Date: Tue, 20 Oct 2026 12:23:37 -0700 Subject: [PATCH] gh-124549: Document that `strptime()` uses the last directive when a time unit is over-specified (GH-125009) * Add a note that when over-specifying datetime format, only the last directive gets used. * adjust and reorganize the notes location, fast forward to latest. * Update Doc/library/datetime.rst Co-authored-by: Stan Ulbrych --------- (cherry picked from commit fd6ed15a894dcc426da3d4d6cc9f297573b2c83e) Co-authored-by: Mariatta Co-authored-by: Stan Ulbrych --- Doc/library/datetime.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst index 5e85da49e1c3b85..e6c04fff1c55550 100644 --- a/Doc/library/datetime.rst +++ b/Doc/library/datetime.rst @@ -2703,6 +2703,13 @@ in the format string will be pulled from the default value. the default year of 1900 is *not* a leap year. Always add a default leap year to partial date strings before parsing. +.. note:: + If a :meth:`~.datetime.strptime` format string contains more than + one directive for the same field, for example both ``%Y`` and ``%y``, + every directive must still match the input, but only the value of the + last one is used. For example, parsing ``200099`` with ``%Y%y`` gives + the year 1999. Repeating the same directive, like ``%Y%Y``, raises an error. + .. testsetup:: # doctest seems to turn the warning into an error which makes it