1 "Implementation of tzinfo classes for use with datetime.datetime."
5 from datetime
import timedelta
, tzinfo
6 from django
.utils
.encoding
import smart_unicode
9 DEFAULT_ENCODING
= locale
.getdefaultlocale()[1] or 'ascii'
11 # Any problems at all determining the locale and we fallback. See #5846.
12 DEFAULT_ENCODING
= 'ascii'
14 class FixedOffset(tzinfo
):
15 "Fixed offset in minutes east from UTC."
16 def __init__(self
, offset
):
17 self
.__offset
= timedelta(minutes
=offset
)
18 self
.__name
= u
"%+03d%02d" % (offset
// 60, offset
% 60)
23 def utcoffset(self
, dt
):
32 class LocalTimezone(tzinfo
):
33 "Proxy timezone information from time module."
34 def __init__(self
, dt
):
35 tzinfo
.__init
__(self
, dt
)
36 self
._tzname
= self
.tzname(dt
)
41 def utcoffset(self
, dt
):
43 return timedelta(seconds
=-time
.altzone
)
45 return timedelta(seconds
=-time
.timezone
)
49 return timedelta(seconds
=-time
.altzone
) - timedelta(seconds
=-time
.timezone
)
55 return smart_unicode(time
.tzname
[self
._isdst
(dt
)], DEFAULT_ENCODING
)
56 except UnicodeDecodeError:
60 tt
= (dt
.year
, dt
.month
, dt
.day
, dt
.hour
, dt
.minute
, dt
.second
, dt
.weekday(), 0, -1)
62 stamp
= time
.mktime(tt
)
64 # 32 bit systems can't handle dates after Jan 2038, so we fake it
65 # in that case (since we only care about the DST flag here).
67 stamp
= time
.mktime(tt
)
68 tt
= time
.localtime(stamp
)
69 return tt
.tm_isdst
> 0