mirror of
https://github.com/python/cpython.git
synced 2025-11-13 23:46:24 +00:00
bpo-37488 : Document a warning for datetime.utcnow() and utcfromtimestamp() (GH-15773)
https://bugs.python.org/issue37488 Automerge-Triggered-By: @pganssle
This commit is contained in:
parent
b6643dcfc2
commit
1a53c785e6
2 changed files with 35 additions and 16 deletions
|
|
@ -862,13 +862,10 @@ Other constructors, all class methods:
|
||||||
(for example, this may be possible on platforms supplying the C
|
(for example, this may be possible on platforms supplying the C
|
||||||
:c:func:`gettimeofday` function).
|
:c:func:`gettimeofday` function).
|
||||||
|
|
||||||
If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` subclass, and the
|
If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` subclass,
|
||||||
current date and time are converted to *tz*’s time zone. In this case the
|
and the current date and time are converted to *tz*’s time zone.
|
||||||
result is equivalent to::
|
|
||||||
|
|
||||||
tz.fromutc(datetime.utcnow().replace(tzinfo=tz))
|
This function is preferred over :meth:`today` and :meth:`utcnow`.
|
||||||
|
|
||||||
See also :meth:`today`, :meth:`utcnow`.
|
|
||||||
|
|
||||||
|
|
||||||
.. classmethod:: datetime.utcnow()
|
.. classmethod:: datetime.utcnow()
|
||||||
|
|
@ -879,6 +876,14 @@ Other constructors, all class methods:
|
||||||
:class:`.datetime` object. An aware current UTC datetime can be obtained by
|
:class:`.datetime` object. An aware current UTC datetime can be obtained by
|
||||||
calling ``datetime.now(timezone.utc)``. See also :meth:`now`.
|
calling ``datetime.now(timezone.utc)``. See also :meth:`now`.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Because naive ``datetime`` objects are treated by many ``datetime`` methods
|
||||||
|
as local times, it is preferred to use aware datetimes to represent times
|
||||||
|
in UTC. As such, the recommended way to create an object representing the
|
||||||
|
current time in UTC by calling ``datetime.now(timezone.utc)``.
|
||||||
|
|
||||||
|
|
||||||
.. classmethod:: datetime.fromtimestamp(timestamp, tz=None)
|
.. classmethod:: datetime.fromtimestamp(timestamp, tz=None)
|
||||||
|
|
||||||
Return the local date and time corresponding to the POSIX timestamp, such as is
|
Return the local date and time corresponding to the POSIX timestamp, such as is
|
||||||
|
|
@ -889,10 +894,6 @@ Other constructors, all class methods:
|
||||||
If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` subclass, and the
|
If *tz* is not ``None``, it must be an instance of a :class:`tzinfo` subclass, and the
|
||||||
timestamp is converted to *tz*’s time zone.
|
timestamp is converted to *tz*’s time zone.
|
||||||
|
|
||||||
In this case the result is equivalent to::
|
|
||||||
|
|
||||||
tz.fromutc(datetime.utcfromtimestamp(timestamp).replace(tzinfo=tz))
|
|
||||||
|
|
||||||
:meth:`fromtimestamp` may raise :exc:`OverflowError`, if the timestamp is out of
|
:meth:`fromtimestamp` may raise :exc:`OverflowError`, if the timestamp is out of
|
||||||
the range of values supported by the platform C :c:func:`localtime` or
|
the range of values supported by the platform C :c:func:`localtime` or
|
||||||
:c:func:`gmtime` functions, and :exc:`OSError` on :c:func:`localtime` or
|
:c:func:`gmtime` functions, and :exc:`OSError` on :c:func:`localtime` or
|
||||||
|
|
@ -901,7 +902,8 @@ Other constructors, all class methods:
|
||||||
1970 through 2038. Note that on non-POSIX systems that include leap seconds in
|
1970 through 2038. Note that on non-POSIX systems that include leap seconds in
|
||||||
their notion of a timestamp, leap seconds are ignored by :meth:`fromtimestamp`,
|
their notion of a timestamp, leap seconds are ignored by :meth:`fromtimestamp`,
|
||||||
and then it's possible to have two timestamps differing by a second that yield
|
and then it's possible to have two timestamps differing by a second that yield
|
||||||
identical :class:`.datetime` objects. See also :meth:`utcfromtimestamp`.
|
identical :class:`.datetime` objects. This method is preferred over
|
||||||
|
:meth:`utcfromtimestamp`.
|
||||||
|
|
||||||
.. versionchanged:: 3.3
|
.. versionchanged:: 3.3
|
||||||
Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp
|
Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp
|
||||||
|
|
@ -935,6 +937,14 @@ Other constructors, all class methods:
|
||||||
except the latter formula always supports the full years range: between
|
except the latter formula always supports the full years range: between
|
||||||
:const:`MINYEAR` and :const:`MAXYEAR` inclusive.
|
:const:`MINYEAR` and :const:`MAXYEAR` inclusive.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Because naive ``datetime`` objects are treated by many ``datetime`` methods
|
||||||
|
as local times, it is preferred to use aware datetimes to represent times
|
||||||
|
in UTC. As such, the recommended way to create an object representing a
|
||||||
|
specific timestamp in UTC by calling
|
||||||
|
``datetime.fromtimestamp(timestamp, tz=timezone.utc)``.
|
||||||
|
|
||||||
.. versionchanged:: 3.3
|
.. versionchanged:: 3.3
|
||||||
Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp
|
Raise :exc:`OverflowError` instead of :exc:`ValueError` if the timestamp
|
||||||
is out of the range of values supported by the platform C
|
is out of the range of values supported by the platform C
|
||||||
|
|
@ -1322,6 +1332,14 @@ Instance methods:
|
||||||
``MINYEAR`` or ``MAXYEAR`` and UTC adjustment spills over a year
|
``MINYEAR`` or ``MAXYEAR`` and UTC adjustment spills over a year
|
||||||
boundary.
|
boundary.
|
||||||
|
|
||||||
|
.. warning::
|
||||||
|
|
||||||
|
Because naive ``datetime`` objects are treated by many ``datetime`` methods
|
||||||
|
as local times, it is preferred to use aware datetimes to represent times
|
||||||
|
in UTC; as a result, using ``utcfromtimetuple`` may give misleading
|
||||||
|
results. If you have a naive ``datetime`` representing UTC, use
|
||||||
|
``datetime.replace(tzinfo=timezone.utc)`` to make it aware, at which point
|
||||||
|
you can use :meth:`.datetime.timetuple`.
|
||||||
|
|
||||||
.. method:: datetime.toordinal()
|
.. method:: datetime.toordinal()
|
||||||
|
|
||||||
|
|
@ -1500,7 +1518,7 @@ Examples of working with :class:`~datetime.datetime` objects:
|
||||||
|
|
||||||
.. doctest::
|
.. doctest::
|
||||||
|
|
||||||
>>> from datetime import datetime, date, time
|
>>> from datetime import datetime, date, time, timezone
|
||||||
|
|
||||||
>>> # Using datetime.combine()
|
>>> # Using datetime.combine()
|
||||||
>>> d = date(2005, 7, 14)
|
>>> d = date(2005, 7, 14)
|
||||||
|
|
@ -1508,11 +1526,11 @@ Examples of working with :class:`~datetime.datetime` objects:
|
||||||
>>> datetime.combine(d, t)
|
>>> datetime.combine(d, t)
|
||||||
datetime.datetime(2005, 7, 14, 12, 30)
|
datetime.datetime(2005, 7, 14, 12, 30)
|
||||||
|
|
||||||
>>> # Using datetime.now() or datetime.utcnow()
|
>>> # Using datetime.now()
|
||||||
>>> datetime.now() # doctest: +SKIP
|
>>> datetime.now() # doctest: +SKIP
|
||||||
datetime.datetime(2007, 12, 6, 16, 29, 43, 79043) # GMT +1
|
datetime.datetime(2007, 12, 6, 16, 29, 43, 79043) # GMT +1
|
||||||
>>> datetime.utcnow() # doctest: +SKIP
|
>>> datetime.now(timezone.utc) # doctest: +SKIP
|
||||||
datetime.datetime(2007, 12, 6, 15, 29, 43, 79060)
|
datetime.datetime(2007, 12, 6, 15, 29, 43, 79060, tzinfo=datetime.timezone.utc)
|
||||||
|
|
||||||
>>> # Using datetime.strptime()
|
>>> # Using datetime.strptime()
|
||||||
>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
|
>>> dt = datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
|
||||||
|
|
@ -1616,7 +1634,7 @@ Usage of ``KabulTz`` from above::
|
||||||
datetime.datetime(2006, 6, 14, 8, 30, tzinfo=datetime.timezone.utc)
|
datetime.datetime(2006, 6, 14, 8, 30, tzinfo=datetime.timezone.utc)
|
||||||
>>> dt2
|
>>> dt2
|
||||||
datetime.datetime(2006, 6, 14, 13, 0, tzinfo=KabulTz())
|
datetime.datetime(2006, 6, 14, 13, 0, tzinfo=KabulTz())
|
||||||
>>> dt2.utctimetuple() == dt3.utctimetuple()
|
>>> dt2 == dt3
|
||||||
True
|
True
|
||||||
|
|
||||||
.. _datetime-time:
|
.. _datetime-time:
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Add warning to :meth:`datetime.utctimetuple`, :meth:`datetime.utcnow` and :meth:`datetime.utcfromtimestamp` .
|
||||||
Loading…
Add table
Add a link
Reference in a new issue