summaryrefslogtreecommitdiff
path: root/django/utils/tzinfo.py
diff options
context:
space:
mode:
authorGeorg Bauer <gb@hugo.westfalen.de>2005-10-23 10:18:03 +0000
committerGeorg Bauer <gb@hugo.westfalen.de>2005-10-23 10:18:03 +0000
commit174c8a0295c7e3f4782b5a0769de92e3f94bc801 (patch)
treef3904f5b731f6314c55341bd5f859484d8cd8ec1 /django/utils/tzinfo.py
parent15f1da053220394061d0f37447e545597cee6cd9 (diff)
parent17f62269c2168549b76ee6204a1423a6e6f4e5f5 (diff)
i18n: merged to [992] from trunk
git-svn-id: http://code.djangoproject.com/svn/django/branches/i18n@993 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django/utils/tzinfo.py')
-rw-r--r--django/utils/tzinfo.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/django/utils/tzinfo.py b/django/utils/tzinfo.py
new file mode 100644
index 0000000000..cc9f028e91
--- /dev/null
+++ b/django/utils/tzinfo.py
@@ -0,0 +1,52 @@
+"Implementation of tzinfo classes for use with datetime.datetime."
+
+import time
+from datetime import timedelta, tzinfo
+
+class FixedOffset(tzinfo):
+ "Fixed offset in minutes east from UTC."
+ def __init__(self, offset):
+ self.__offset = timedelta(minutes=offset)
+ self.__name = "%+03d%02d" % (offset // 60, offset % 60)
+
+ def __repr__(self):
+ return self.__name
+
+ def utcoffset(self, dt):
+ return self.__offset
+
+ def tzname(self, dt):
+ return self.__name
+
+ def dst(self, dt):
+ return timedelta(0)
+
+class LocalTimezone(tzinfo):
+ "Proxy timezone information from time module."
+ def __init__(self, dt):
+ tzinfo.__init__(self, dt)
+ self._tzname = time.tzname[self._isdst(dt)]
+
+ def __repr__(self):
+ return self._tzname
+
+ def utcoffset(self, dt):
+ if self._isdst(dt):
+ return timedelta(seconds=-time.altzone)
+ else:
+ return timedelta(seconds=-time.timezone)
+
+ def dst(self, dt):
+ if self._isdst(dt):
+ return timedelta(seconds=-time.altzone) - timedelta(seconds=-time.timezone)
+ else:
+ return timedelta(0)
+
+ def tzname(self, dt):
+ return time.tzname[self._isdst(dt)]
+
+ def _isdst(self, dt):
+ tt = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, dt.weekday(), 0, -1)
+ stamp = time.mktime(tt)
+ tt = time.localtime(stamp)
+ return tt.tm_isdst > 0