mirror of https://github.com/python/cpython
bpo-43869: Time Epoch is the same on all platforms (GH-30664)
This commit is contained in:
parent
7c0914d35e
commit
a847785b40
|
@ -21,10 +21,8 @@ An explanation of some terminology and conventions is in order.
|
||||||
|
|
||||||
.. index:: single: epoch
|
.. index:: single: epoch
|
||||||
|
|
||||||
* The :dfn:`epoch` is the point where the time starts, and is platform
|
* The :dfn:`epoch` is the point where the time starts, the return value of
|
||||||
dependent. For Unix and Windows, the epoch is January 1, 1970, 00:00:00 (UTC).
|
``time.gmtime(0)``. It is January 1, 1970, 00:00:00 (UTC) on all platforms.
|
||||||
To find out what the epoch is on a given platform, look at
|
|
||||||
``time.gmtime(0)``.
|
|
||||||
|
|
||||||
.. _leap seconds: https://en.wikipedia.org/wiki/Leap_second
|
.. _leap seconds: https://en.wikipedia.org/wiki/Leap_second
|
||||||
|
|
||||||
|
@ -37,7 +35,7 @@ An explanation of some terminology and conventions is in order.
|
||||||
|
|
||||||
.. index:: single: Year 2038
|
.. index:: single: Year 2038
|
||||||
|
|
||||||
* The functions in this module may not handle dates and times before the epoch or
|
* The functions in this module may not handle dates and times before the epoch_ or
|
||||||
far in the future. The cut-off point in the future is determined by the C
|
far in the future. The cut-off point in the future is determined by the C
|
||||||
library; for 32-bit systems, it is typically in 2038.
|
library; for 32-bit systems, it is typically in 2038.
|
||||||
|
|
||||||
|
@ -207,7 +205,7 @@ Functions
|
||||||
|
|
||||||
.. function:: ctime([secs])
|
.. function:: ctime([secs])
|
||||||
|
|
||||||
Convert a time expressed in seconds since the epoch to a string of a form:
|
Convert a time expressed in seconds since the epoch_ to a string of a form:
|
||||||
``'Sun Jun 20 23:21:05 1993'`` representing local time. The day field
|
``'Sun Jun 20 23:21:05 1993'`` representing local time. The day field
|
||||||
is two characters long and is space padded if the day is a single digit,
|
is two characters long and is space padded if the day is a single digit,
|
||||||
e.g.: ``'Wed Jun 9 04:26:40 1993'``.
|
e.g.: ``'Wed Jun 9 04:26:40 1993'``.
|
||||||
|
@ -245,7 +243,7 @@ Functions
|
||||||
|
|
||||||
.. function:: gmtime([secs])
|
.. function:: gmtime([secs])
|
||||||
|
|
||||||
Convert a time expressed in seconds since the epoch to a :class:`struct_time` in
|
Convert a time expressed in seconds since the epoch_ to a :class:`struct_time` in
|
||||||
UTC in which the dst flag is always zero. If *secs* is not provided or
|
UTC in which the dst flag is always zero. If *secs* is not provided or
|
||||||
:const:`None`, the current time as returned by :func:`.time` is used. Fractions
|
:const:`None`, the current time as returned by :func:`.time` is used. Fractions
|
||||||
of a second are ignored. See above for a description of the
|
of a second are ignored. See above for a description of the
|
||||||
|
@ -601,14 +599,10 @@ Functions
|
||||||
.. function:: time() -> float
|
.. function:: time() -> float
|
||||||
|
|
||||||
Return the time in seconds since the epoch_ as a floating point
|
Return the time in seconds since the epoch_ as a floating point
|
||||||
number. The specific date of the epoch and the handling of
|
number. The handling of `leap seconds`_ is platform dependent.
|
||||||
`leap seconds`_ is platform dependent.
|
On Windows and most Unix systems, the leap seconds are not counted towards
|
||||||
On Windows and most Unix systems, the epoch is January 1, 1970,
|
the time in seconds since the epoch_. This is commonly referred to as `Unix
|
||||||
00:00:00 (UTC) and leap seconds are not counted towards the time
|
time <https://en.wikipedia.org/wiki/Unix_time>`_.
|
||||||
in seconds since the epoch. This is commonly referred to as
|
|
||||||
`Unix time <https://en.wikipedia.org/wiki/Unix_time>`_.
|
|
||||||
To find out what the epoch is on a given platform, look at
|
|
||||||
``gmtime(0)``.
|
|
||||||
|
|
||||||
Note that even though the time is always returned as a floating point
|
Note that even though the time is always returned as a floating point
|
||||||
number, not all systems provide time with a better precision than 1 second.
|
number, not all systems provide time with a better precision than 1 second.
|
||||||
|
@ -629,8 +623,8 @@ Functions
|
||||||
|
|
||||||
.. function:: time_ns() -> int
|
.. function:: time_ns() -> int
|
||||||
|
|
||||||
Similar to :func:`~time.time` but returns time as an integer number of nanoseconds
|
Similar to :func:`~time.time` but returns time as an integer number of
|
||||||
since the epoch_.
|
nanoseconds since the epoch_.
|
||||||
|
|
||||||
.. versionadded:: 3.7
|
.. versionadded:: 3.7
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,13 @@ class TimeTestCase(unittest.TestCase):
|
||||||
self.assertRaises(ValueError, time.sleep, -1)
|
self.assertRaises(ValueError, time.sleep, -1)
|
||||||
time.sleep(1.2)
|
time.sleep(1.2)
|
||||||
|
|
||||||
|
def test_epoch(self):
|
||||||
|
# bpo-43869: Make sure that Python use the same Epoch on all platforms:
|
||||||
|
# January 1, 1970, 00:00:00 (UTC).
|
||||||
|
epoch = time.gmtime(0)
|
||||||
|
# Only test the date and time, ignore other gmtime() members
|
||||||
|
self.assertEqual(tuple(epoch)[:6], (1970, 1, 1, 0, 0, 0), epoch)
|
||||||
|
|
||||||
def test_strftime(self):
|
def test_strftime(self):
|
||||||
tt = time.gmtime(self.t)
|
tt = time.gmtime(self.t)
|
||||||
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
|
for directive in ('a', 'A', 'b', 'B', 'c', 'd', 'H', 'I',
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
Python uses the same time Epoch on all platforms. Add an explicit unit test
|
||||||
|
to ensure that it's the case. Patch by Victor Stinner.
|
Loading…
Reference in New Issue