Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Improved LocalTimezone._isdst() to handle dates before approximately …

…1901-12-01 (the specific cutoff date is platform-specific). Refs #1443

git-svn-id: http://code.djangoproject.com/svn/django/trunk@7945 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information...
commit f6fafc02c8ba60b950bbe6be3b3ba729038dbb0a 1 parent c4d0cfe
@adrianholovaty adrianholovaty authored
Showing with 11 additions and 3 deletions.
  1. +11 −3 django/utils/tzinfo.py
View
14 django/utils/tzinfo.py
@@ -60,9 +60,17 @@ def _isdst(self, dt):
tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1)
try:
stamp = time.mktime(tt)
- except OverflowError:
- # 32 bit systems can't handle dates after Jan 2038, so we fake it
- # in that case (since we only care about the DST flag here).
+ except (OverflowError, ValueError):
+ # 32 bit systems can't handle dates after Jan 2038, and certain
+ # systems can't handle dates before ~1901-12-01:
+ #
+ # >>> time.mktime((1900, 1, 13, 0, 0, 0, 0, 0, 0))
+ # OverflowError: mktime argument out of range
+ # >>> time.mktime((1850, 1, 13, 0, 0, 0, 0, 0, 0))
+ # ValueError: year out of range
+ #
+ # In this case, we fake the date, because we only care about the
+ # DST flag.
tt = (2037,) + tt[1:]
stamp = time.mktime(tt)
tt = time.localtime(stamp)
Please sign in to comment.
Something went wrong with that request. Please try again.