]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-130843: add UUIDv7 timestamp recipes (#132154)
authorBénédikt Tran <10796600+picnixz@users.noreply.github.com>
Mon, 7 Apr 2025 15:21:56 +0000 (17:21 +0200)
committerGitHub <noreply@github.com>
Mon, 7 Apr 2025 15:21:56 +0000 (17:21 +0200)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Doc/library/uuid.rst

index 13c00d22ef02991dc40e8eb7ffc84bae0aa97f6a..75ea27c7d39b189b69e20d68c81edf52e6709d0a 100644 (file)
@@ -121,8 +121,10 @@ which relays any information about the UUID's safety, using this enumeration:
      - The last 48 bits of the UUID. Only relevant to version 1.
 
    * - .. attribute:: UUID.time
-     - The 60-bit timestamp for version 1 and 6,
-       or the 48-bit timestamp for version 7.
+     - The 60-bit timestamp as a count of 100-nanosecond intervals since
+       Gregorian epoch (1582-10-15 00:00:00) for versions 1 and 6, or the
+       48-bit timestamp in milliseconds since Unix epoch (1970-01-01 00:00:00)
+       for version 7.
 
    * - .. attribute:: UUID.clock_seq
      - The 14-bit sequence number. Only relevant to versions 1 and 6.
@@ -434,6 +436,15 @@ Here are some examples of typical usage of the :mod:`uuid` module::
    >>> uuid.MAX
    UUID('ffffffff-ffff-ffff-ffff-ffffffffffff')
 
+   >>> # get UUIDv7 creation (local) time as a timestamp in milliseconds
+   >>> u = uuid.uuid7()
+   >>> u.time  # doctest: +SKIP
+   1743936859822
+   >>> # get UUIDv7 creation (local) time as a datetime object
+   >>> import datetime as dt
+   >>> dt.datetime.fromtimestamp(u.time / 1000)  # doctest: +SKIP
+   datetime.datetime(...)
+
 
 .. _uuid-cli-example: