equal
deleted
inserted
replaced
|
1 """ |
|
2 Miscellanous bucket of everything |
|
3 """ |
|
4 |
|
5 import datetime |
|
6 import time |
|
7 |
|
8 class LocalTimezone (datetime.tzinfo) : |
|
9 """ |
|
10 Our platform's (the 'time' module) idea of our local timezone. |
|
11 """ |
|
12 |
|
13 ZERO = datetime.timedelta(0) |
|
14 |
|
15 STDOFFSET = datetime.timedelta(seconds = -time.timezone) |
|
16 |
|
17 if time.daylight: |
|
18 DSTOFFSET = datetime.timedelta(seconds = -time.altzone) |
|
19 else: |
|
20 DSTOFFSET = STDOFFSET |
|
21 |
|
22 DSTDIFF = DSTOFFSET - STDOFFSET |
|
23 |
|
24 def _isdst (self, dt) : |
|
25 # time tuple in local time |
|
26 tt = (dt.year, dt.month, dt.day, |
|
27 dt.hour, dt.minute, dt.second, |
|
28 dt.weekday(), 0, -1) |
|
29 |
|
30 # to UTC timestamp |
|
31 stamp = time.mktime(tt) |
|
32 |
|
33 # roundtrip.. |
|
34 tt = time.localtime(stamp) |
|
35 |
|
36 # to figure out DST flag |
|
37 return tt.tm_isdst > 0 |
|
38 |
|
39 def utcoffset (self, dt) : |
|
40 if self._isdst(dt) : |
|
41 return self.DSTOFFSET |
|
42 else: |
|
43 return self.STDOFFSET |
|
44 |
|
45 def dst (self, dt) : |
|
46 if self._isdst(dt) : |
|
47 return self.DSTDIFF |
|
48 else: |
|
49 return self.ZERO |
|
50 |
|
51 def tzname (self, dt) : |
|
52 # varies by DST |
|
53 return time.tzname[self._isdst(dt)] |
|
54 |
|
55 |