https://github.com/python/cpython/commit/fb196c6f32b3b5e1d2cf1780a7595298d0d011f1
commit: fb196c6f32b3b5e1d2cf1780a7595298d0d011f1
branch: main
author: Stan Ulbrych <[email protected]>
committer: encukou <[email protected]>
date: 2026-02-06T17:08:26+01:00
summary:

gh-140715: Update `datetime.*.str*time` format code tables (GH-140716)

files:
M Doc/library/datetime.rst

diff --git a/Doc/library/datetime.rst b/Doc/library/datetime.rst
index 48e7080da6c525..3ab3450032abe4 100644
--- a/Doc/library/datetime.rst
+++ b/Doc/library/datetime.rst
@@ -2495,79 +2495,105 @@ These methods accept format codes that can be used to 
parse and format dates::
    >>> _.strftime('%a %d %b %Y, %I:%M%p')
    'Mon 31 Jan 2022, 11:59PM'
 
-The following is a list of all the format codes that the 1989 C standard
-requires, and these work on all platforms with a standard C implementation.
+The following is a list of all the format codes that the 2011 C standard
+requires, and these work on all supported platforms.
 
 +-----------+--------------------------------+------------------------+-------+
-| Directive | Meaning                        | Example                | Notes |
+| Directive |           Meaning              |        Example         | Notes |
+|           |                                |                        |       |
 +===========+================================+========================+=======+
-| ``%a``    | Weekday as locale's            || Sun, Mon, ..., Sat    | \(1)  |
+|  ``%a``   | Weekday as locale's            || Sun, Mon, ..., Sat    | \(1)  |
 |           | abbreviated name.              |  (en_US);              |       |
 |           |                                || So, Mo, ..., Sa       |       |
 |           |                                |  (de_DE)               |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%A``    | Weekday as locale's full name. || Sunday, Monday, ...,  | \(1)  |
+|  ``%A``   | Weekday as locale's full name. || Sunday, Monday, ...,  | \(1)  |
 |           |                                |  Saturday (en_US);     |       |
 |           |                                || Sonntag, Montag, ..., |       |
 |           |                                |  Samstag (de_DE)       |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%w``    | Weekday as a decimal number,   | 0, 1, ..., 6           |       |
-|           | where 0 is Sunday and 6 is     |                        |       |
-|           | Saturday.                      |                        |       |
-+-----------+--------------------------------+------------------------+-------+
-| ``%d``    | Day of the month as a          | 01, 02, ..., 31        | \(9)  |
-|           | zero-padded decimal number.    |                        |       |
-+-----------+--------------------------------+------------------------+-------+
-| ``%b``    | Month as locale's abbreviated  || Jan, Feb, ..., Dec    | \(1)  |
+|  ``%b``   | Month as locale's abbreviated  || Jan, Feb, ..., Dec    | \(1)  |
 |           | name.                          |  (en_US);              |       |
 |           |                                || Jan, Feb, ..., Dez    |       |
 |           |                                |  (de_DE)               |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%B``    | Month as locale's full name.   || January, February,    | \(1)  |
+|  ``%B``   | Month as locale's full name.   || January, February,    | \(1)  |
 |           |                                |  ..., December (en_US);|       |
 |           |                                || Januar, Februar, ..., |       |
 |           |                                |  Dezember (de_DE)      |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%m``    | Month as a zero-padded         | 01, 02, ..., 12        | \(9)  |
-|           | decimal number.                |                        |       |
+|  ``%c``   | Locale's appropriate date and  || Tue Aug 16 21:30:00   | \(1)  |
+|           | time representation.           |  1988 (en_US);         |       |
+|           |                                || Di 16 Aug 21:30:00    |       |
+|           |                                |  1988 (de_DE)          |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%y``    | Year without century as a      | 00, 01, ..., 99        | \(9)  |
+|  ``%C``   | The year divided by 100 and    | 01, 02, ..., 99        | \(0)  |
+|           | truncated to an integer as a   |                        |       |
 |           | zero-padded decimal number.    |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%Y``    | Year with century as a decimal | 0001, 0002, ..., 2013, | \(2)  |
-|           | number.                        | 2014, ..., 9998, 9999  |       |
+|  ``%d``   | Day of the month as a          | 01, 02, ..., 31        | \(9)  |
+|           | zero-padded decimal number.    |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%D``   | Equivalent to ``%m/%d/%y``.    | 11/10/2025             | \(9), |
+|           |                                |                        | \(0)  |
++-----------+--------------------------------+------------------------+-------+
+|  ``%e``   | The day of the month as a      | ␣1, ␣2, ..., 31        |       |
+|           | space-padded decimal number.   |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%F``   | Equivalent to ``%Y-%m-%d``,    | 2025-10-11,            | \(0)  |
+|           | the ISO 8601 format.           | 1001-12-30             |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%g``   | Last 2 digits of ISO 8601 year | 00, 01, ..., 99        | \(0)  |
+|           | representing the year that     |                        |       |
+|           | contains the greater part of   |                        |       |
+|           | the ISO week (``%V``).         |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%H``    | Hour (24-hour clock) as a      | 00, 01, ..., 23        | \(9)  |
+|  ``%G``   | ISO 8601 year with century     | 0001, 0002, ..., 2013, | \(8)  |
+|           | representing the year that     | 2014, ..., 9998, 9999  |       |
+|           | contains the greater part of   |                        |       |
+|           | the ISO week (``%V``).         |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%h``   | Equivalent to ``%b``.          | See ``%b``.            | \(0)  |
++-----------+--------------------------------+------------------------+-------+
+|  ``%H``   | Hour (24-hour clock) as a      | 00, 01, ..., 23        | \(9)  |
 |           | zero-padded decimal number.    |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%I``    | Hour (12-hour clock) as a      | 01, 02, ..., 12        | \(9)  |
+|  ``%I``   | Hour (12-hour clock) as a      | 01, 02, ..., 12        | \(9)  |
 |           | zero-padded decimal number.    |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%p``    | Locale's equivalent of either  || AM, PM (en_US);       | \(1), |
-|           | AM or PM.                      || am, pm (de_DE)        | \(3)  |
+|  ``%j``   | Day of the year as a           | 001, 002, ..., 366     | \(9)  |
+|           | zero-padded decimal number.    |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%M``    | Minute as a zero-padded        | 00, 01, ..., 59        | \(9)  |
+|  ``%m``   | Month as a zero-padded         | 01, 02, ..., 12        | \(9)  |
 |           | decimal number.                |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%S``    | Second as a zero-padded        | 00, 01, ..., 59        | \(4), |
-|           | decimal number.                |                        | \(9)  |
+|  ``%M``   | Minute as a zero-padded        | 00, 01, ..., 59        | \(9)  |
+|           | decimal number.                |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%f``    | Microsecond as a decimal       | 000000, 000001, ...,   | \(5)  |
-|           | number, zero-padded to 6       | 999999                 |       |
-|           | digits.                        |                        |       |
+|  ``%n``   | The newline character          | ``\n``                 | \(0)  |
+|           | (``'\n'``).                    |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%z``    | UTC offset in the form         | (empty), +0000,        | \(6)  |
-|           | ``±HHMM[SS[.ffffff]]`` (empty  | -0400, +1030,          |       |
-|           | string if the object is        | +063415,               |       |
-|           | naive).                        | -030712.345216         |       |
+|  ``%p``   | Locale's equivalent of either  || AM, PM (en_US);       | \(1), |
+|           | AM or PM.                      || am, pm (de_DE)        | \(3)  |
 +-----------+--------------------------------+------------------------+-------+
-| ``%Z``    | Time zone name (empty string   | (empty), UTC, GMT      | \(6)  |
-|           | if the object is naive).       |                        |       |
+|  ``%r``   | Locale's 12-hour clock time.   | 12:00:00 AM            | \(1), |
+|           |                                |                        | \(0)  |
 +-----------+--------------------------------+------------------------+-------+
-| ``%j``    | Day of the year as a           | 001, 002, ..., 366     | \(9)  |
-|           | zero-padded decimal number.    |                        |       |
+|  ``%R``   | Equivalent to ``%H:%M``.       | 10:01                  |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%S``   | Second as a zero-padded        | 00, 01, ..., 59        | \(4), |
+|           | decimal number.                |                        | \(9)  |
++-----------+--------------------------------+------------------------+-------+
+|  ``%t``   | The tab character              | ``\t``                 | \(0)  |
+|           | (``'\t'``).                    |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%T``   | ISO 8601 time format,          | 10:01:59               |       |
+|           | equivalent to ``%H:%M:%S``.    |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%u``   | ISO 8601 weekday as a decimal  | 1, 2, ..., 7           |       |
+|           | number where 1 is Monday.      |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%U``    | Week number of the year        | 00, 01, ..., 53        | \(7), |
+|  ``%U``   | Week number of the year        | 00, 01, ..., 53        | \(7), |
 |           | (Sunday as the first day of    |                        | \(9)  |
 |           | the week) as a zero-padded     |                        |       |
 |           | decimal number. All days in a  |                        |       |
@@ -2575,7 +2601,17 @@ requires, and these work on all platforms with a 
standard C implementation.
 |           | Sunday are considered to be in |                        |       |
 |           | week 0.                        |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%W``    | Week number of the year        | 00, 01, ..., 53        | \(7), |
+|  ``%V``   | ISO 8601 week as a decimal     | 01, 02, ..., 53        | \(8), |
+|           | number with Monday as          |                        | \(9)  |
+|           | the first day of the week.     |                        |       |
+|           | Week 01 is the week containing |                        |       |
+|           | Jan 4.                         |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%w``   | Weekday as a decimal number,   | 0, 1, ..., 6           |       |
+|           | where 0 is Sunday and 6 is     |                        |       |
+|           | Saturday.                      |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%W``   | Week number of the year        | 00, 01, ..., 53        | \(7), |
 |           | (Monday as the first day of    |                        | \(9)  |
 |           | the week) as a zero-padded     |                        |       |
 |           | decimal number. All days in a  |                        |       |
@@ -2583,40 +2619,43 @@ requires, and these work on all platforms with a 
standard C implementation.
 |           | Monday are considered to be in |                        |       |
 |           | week 0.                        |                        |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%c``    | Locale's appropriate date and  || Tue Aug 16 21:30:00   | \(1)  |
-|           | time representation.           |  1988 (en_US);         |       |
-|           |                                || Di 16 Aug 21:30:00    |       |
-|           |                                |  1988 (de_DE)          |       |
-+-----------+--------------------------------+------------------------+-------+
-| ``%x``    | Locale's appropriate date      || 08/16/88 (None);      | \(1)  |
+|  ``%x``   | Locale's appropriate date      || 08/16/88 (None);      | \(1)  |
 |           | representation.                || 08/16/1988 (en_US);   |       |
 |           |                                || 16.08.1988 (de_DE)    |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%X``    | Locale's appropriate time      || 21:30:00 (en_US);     | \(1)  |
+|  ``%X``   | Locale's appropriate time      || 21:30:00 (en_US);     | \(1)  |
 |           | representation.                || 21:30:00 (de_DE)      |       |
 +-----------+--------------------------------+------------------------+-------+
-| ``%%``    | A literal ``'%'`` character.   | %                      |       |
+|  ``%y``   | Year without century as a      | 00, 01, ..., 99        | \(9)  |
+|           | zero-padded decimal number.    |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%Y``   | Year with century as a decimal | 0001, 0002, ..., 2013, | \(2)  |
+|           | number.                        | 2014, ..., 9998, 9999  |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%z``   | UTC offset in the form         | (empty), +0000,        | \(6)  |
+|           | ``±HHMM[SS[.ffffff]]`` (empty  | -0400, +1030,          |       |
+|           | string if the object is        | +063415,               |       |
+|           | naive).                        | -030712.345216         |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%Z``   | Time zone name (empty string   | (empty), UTC, GMT      | \(6)  |
+|           | if the object is naive).       |                        |       |
++-----------+--------------------------------+------------------------+-------+
+|  ``%%``   | A literal ``'%'`` character.   | %                      |       |
 +-----------+--------------------------------+------------------------+-------+
 
-Several additional directives not required by the C89 standard are included for
-convenience. These parameters all correspond to ISO 8601 date values.
+The ISO 8601 year and ISO 8601 week directives are not interchangeable
+with the year and week number directives above. Calling 
:meth:`~.datetime.strptime` with
+incomplete or ambiguous ISO 8601 directives will raise a :exc:`ValueError`.
+
+Several additional directives not required by the C11 standard are included for
+convenience.
 
 +-----------+--------------------------------+------------------------+-------+
 | Directive | Meaning                        | Example                | Notes |
 +===========+================================+========================+=======+
-| ``%G``    | ISO 8601 year with century     | 0001, 0002, ..., 2013, | \(8)  |
-|           | representing the year that     | 2014, ..., 9998, 9999  |       |
-|           | contains the greater part of   |                        |       |
-|           | the ISO week (``%V``).         |                        |       |
-+-----------+--------------------------------+------------------------+-------+
-| ``%u``    | ISO 8601 weekday as a decimal  | 1, 2, ..., 7           |       |
-|           | number where 1 is Monday.      |                        |       |
-+-----------+--------------------------------+------------------------+-------+
-| ``%V``    | ISO 8601 week as a decimal     | 01, 02, ..., 53        | \(8), |
-|           | number with Monday as          |                        | \(9)  |
-|           | the first day of the week.     |                        |       |
-|           | Week 01 is the week containing |                        |       |
-|           | Jan 4.                         |                        |       |
+|  ``%f``   | Microsecond as a decimal       | 000000, 000001, ...,   | \(5)  |
+|           | number, zero-padded to 6       | 999999                 |       |
+|           | digits.                        |                        |       |
 +-----------+--------------------------------+------------------------+-------+
 | ``%:z``   | UTC offset in the form         | (empty), +00:00,       | \(6)  |
 |           | ``±HH:MM[:SS[.ffffff]]``       | -04:00, +10:30,        |       |
@@ -2624,11 +2663,6 @@ convenience. These parameters all correspond to ISO 8601 
date values.
 |           | naive).                        | -03:07:12.345216       |       |
 +-----------+--------------------------------+------------------------+-------+
 
-These may not be available on all platforms when used with the 
:meth:`~.datetime.strftime`
-method. The ISO 8601 year and ISO 8601 week directives are not interchangeable
-with the year and week number directives above. Calling 
:meth:`~.datetime.strptime` with
-incomplete or ambiguous ISO 8601 directives will raise a :exc:`ValueError`.
-
 The full set of format codes supported varies across platforms, because Python
 calls the platform C library's :c:func:`strftime` function, and platform
 variations are common. To see the full set of format codes supported on your
@@ -2712,6 +2746,9 @@ an empty string instead.
 
 Notes:
 
+(0)
+   This format code is currently unsupported by :meth:`~.datetime.strptime`.
+
 (1)
    Because the format depends on the current locale, care should be taken when
    making assumptions about the output value. Field orderings will vary (for

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to