| from datetime import tzinfo |
| |
| class UTC(tzinfo): |
| """UTC""" |
| |
| def utcoffset(self, dt): |
| return 0 |
| |
| def tzname(self, dt): |
| return "UTC" |
| |
| def dst(self, dt): |
| return 0 |
| |
| class FixedOffset(tzinfo): |
| """Fixed offset in minutes east from UTC.""" |
| |
| def __init__(self, offset, name): |
| self.__offset = offset |
| self.__name = name |
| |
| def utcoffset(self, dt): |
| return self.__offset |
| |
| def tzname(self, dt): |
| return self.__name |
| |
| def dst(self, dt): |
| # It depends on more than we know in an example. |
| return None # Indicate we don't know |
| |
| import time |
| |
| class LocalTime(tzinfo): |
| """Local time as defined by the operating system.""" |
| |
| def _isdst(self, dt): |
| t = (dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second, |
| -1, -1, -1) |
| # XXX This may fail for years < 1970 or >= 2038 |
| t = time.localtime(time.mktime(t)) |
| return t.tm_isdst > 0 |
| |
| def utcoffset(self, dt): |
| if self._isdst(dt): |
| return -time.timezone/60 |
| else: |
| return -time.altzone/60 |
| |
| def tzname(self, dt): |
| return time.tzname[self._isdst(dt)] |