mirror of
https://github.com/python/cpython.git
synced 2025-08-10 03:49:18 +00:00
bpo-37642: Update acceptable offsets in timezone (GH-14878) (#15227)
This fixes an inconsistency between the Python and C implementations of
the datetime module. The pure python version of the code was not
accepting offsets greater than 23:59 but less than 24:00. This is an
accidental legacy of the original implementation, which was put in place
before tzinfo allowed sub-minute time zone offsets.
GH-14878
(cherry picked from commit 92c7e30adf
)
This commit is contained in:
parent
64db5aac6b
commit
27b38b99b3
5 changed files with 44 additions and 5 deletions
|
@ -2269,7 +2269,7 @@ class timezone(tzinfo):
|
|||
raise TypeError("fromutc() argument must be a datetime instance"
|
||||
" or None")
|
||||
|
||||
_maxoffset = timedelta(hours=23, minutes=59)
|
||||
_maxoffset = timedelta(hours=24, microseconds=-1)
|
||||
_minoffset = -_maxoffset
|
||||
|
||||
@staticmethod
|
||||
|
@ -2293,8 +2293,11 @@ class timezone(tzinfo):
|
|||
return f'UTC{sign}{hours:02d}:{minutes:02d}'
|
||||
|
||||
timezone.utc = timezone._create(timedelta(0))
|
||||
timezone.min = timezone._create(timezone._minoffset)
|
||||
timezone.max = timezone._create(timezone._maxoffset)
|
||||
# bpo-37642: These attributes are rounded to the nearest minute for backwards
|
||||
# compatibility, even though the constructor will accept a wider range of
|
||||
# values. This may change in the future.
|
||||
timezone.min = timezone._create(-timedelta(hours=23, minutes=59))
|
||||
timezone.max = timezone._create(timedelta(hours=23, minutes=59))
|
||||
_EPOCH = datetime(1970, 1, 1, tzinfo=timezone.utc)
|
||||
|
||||
# Some time zone algebra. For a datetime x, let
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue