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
This commit is contained in:
parent
c4d0cfe1ee
commit
f6fafc02c8
|
@ -60,9 +60,17 @@ class LocalTimezone(tzinfo):
|
||||||
tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1)
|
tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1)
|
||||||
try:
|
try:
|
||||||
stamp = time.mktime(tt)
|
stamp = time.mktime(tt)
|
||||||
except OverflowError:
|
except (OverflowError, ValueError):
|
||||||
# 32 bit systems can't handle dates after Jan 2038, so we fake it
|
# 32 bit systems can't handle dates after Jan 2038, and certain
|
||||||
# in that case (since we only care about the DST flag here).
|
# 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:]
|
tt = (2037,) + tt[1:]
|
||||||
stamp = time.mktime(tt)
|
stamp = time.mktime(tt)
|
||||||
tt = time.localtime(stamp)
|
tt = time.localtime(stamp)
|
||||||
|
|
Loading…
Reference in New Issue