summaryrefslogtreecommitdiff
path: root/Lib/datetime.py
diff options
context:
space:
mode:
authorPaul Ganssle <pganssle@users.noreply.github.com>2019-08-15 15:08:57 -0400
committerGitHub <noreply@github.com>2019-08-15 15:08:57 -0400
commit27b38b99b3a154fa5c25cd67fe01fb4fc04604b0 (patch)
tree8e4bb5cc26a8cd5ab8ac8f288d558bf519377c3c /Lib/datetime.py
parent64db5aac6be73b14396bcde1648997e208b5a8da (diff)
downloadcpython-git-27b38b99b3a154fa5c25cd67fe01fb4fc04604b0.tar.gz
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 92c7e30adf5c81a54d6e5e555a6bdfaa60157a0d)
Diffstat (limited to 'Lib/datetime.py')
-rw-r--r--Lib/datetime.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/Lib/datetime.py b/Lib/datetime.py
index d4c7a1ff90..0adf1dd67d 100644
--- a/Lib/datetime.py
+++ b/Lib/datetime.py
@@ -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