--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/svv/utils.py Thu Jan 20 23:14:07 2011 +0200
@@ -0,0 +1,55 @@
+"""
+ Miscellanous bucket of everything
+"""
+
+import datetime
+import time
+
+class LocalTimezone (datetime.tzinfo) :
+ """
+ Our platform's (the 'time' module) idea of our local timezone.
+ """
+
+ ZERO = datetime.timedelta(0)
+
+ STDOFFSET = datetime.timedelta(seconds = -time.timezone)
+
+ if time.daylight:
+ DSTOFFSET = datetime.timedelta(seconds = -time.altzone)
+ else:
+ DSTOFFSET = STDOFFSET
+
+ DSTDIFF = DSTOFFSET - STDOFFSET
+
+ def _isdst (self, dt) :
+ # time tuple in local time
+ tt = (dt.year, dt.month, dt.day,
+ dt.hour, dt.minute, dt.second,
+ dt.weekday(), 0, -1)
+
+ # to UTC timestamp
+ stamp = time.mktime(tt)
+
+ # roundtrip..
+ tt = time.localtime(stamp)
+
+ # to figure out DST flag
+ return tt.tm_isdst > 0
+
+ def utcoffset (self, dt) :
+ if self._isdst(dt) :
+ return self.DSTOFFSET
+ else:
+ return self.STDOFFSET
+
+ def dst (self, dt) :
+ if self._isdst(dt) :
+ return self.DSTDIFF
+ else:
+ return self.ZERO
+
+ def tzname (self, dt) :
+ # varies by DST
+ return time.tzname[self._isdst(dt)]
+
+