# -*- test-case-name: twisted.python.test.test_tzhelper -*- # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. """ Time zone utilities. """ from datetime import datetime, timedelta, tzinfo __all__ = [ "FixedOffsetTimeZone", "UTC", ] class FixedOffsetTimeZone(tzinfo): """ Represents a fixed timezone offset (without daylight saving time). @ivar name: A L{str} giving the name of this timezone; the name just includes how much time this offset represents. @ivar offset: A L{timedelta} giving the amount of time this timezone is offset. """ def __init__(self, offset, name=None): """ Construct a L{FixedOffsetTimeZone} with a fixed offset. @param offset: a delta representing the offset from UTC. @type offset: L{timedelta} @param name: A name to be given for this timezone. @type name: L{str} or L{None} """ self.offset = offset self.name = name @classmethod def fromSignHoursMinutes(cls, sign, hours, minutes): """ Construct a L{FixedOffsetTimeZone} from an offset described by sign ('+' or '-'), hours, and minutes. @note: For protocol compatibility with AMP, this method never uses 'Z' @param sign: A string describing the positive or negative-ness of the offset. @param hours: The number of hours in the offset. @type hours: L{int} @param minutes: The number of minutes in the offset @type minutes: L{int} @return: A time zone with the given offset, and a name describing the offset. @rtype: L{FixedOffsetTimeZone} """ name = "%s%02i:%02i" % (sign, hours, minutes) if sign == "-": hours = -hours minutes = -minutes elif sign != "+": raise ValueError("Invalid sign for timezone %r" % (sign,)) return cls(timedelta(hours=hours, minutes=minutes), name) @classmethod def fromLocalTimeStamp(cls, timeStamp): """ Create a time zone with a fixed offset corresponding to a time stamp in the system's locally configured time zone. @param timeStamp: a time stamp @type timeStamp: L{int} @return: a time zone @rtype: L{FixedOffsetTimeZone} """ offset = ( datetime.fromtimestamp(timeStamp) - datetime.utcfromtimestamp(timeStamp) ) return cls(offset) def utcoffset(self, dt): """ Return this timezone's offset from UTC. """ return self.offset def dst(self, dt): """ Return a zero C{datetime.timedelta} for the daylight saving time offset, since there is never one. """ return timedelta(0) def tzname(self, dt): """ Return a string describing this timezone. """ if self.name is not None: return self.name # XXX this is wrong; the tests are dt = datetime.fromtimestamp(0, self) return dt.strftime("UTC%z") UTC = FixedOffsetTimeZone.fromSignHoursMinutes("+", 0, 0)
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
_pydoctortemplates | Folder | 0755 |
|
|
test | Folder | 0755 |
|
|
__init__.py | File | 674 B | 0644 |
|
_appdirs.py | File | 788 B | 0644 |
|
_inotify.py | File | 3.37 KB | 0644 |
|
_oldstyle.py | File | 2.53 KB | 0644 |
|
_release.py | File | 18.03 KB | 0644 |
|
_sendmsg.c | File | 15.42 KB | 0644 |
|
_setup.py | File | 12.6 KB | 0644 |
|
_shellcomp.py | File | 23.76 KB | 0644 |
|
_textattributes.py | File | 8.87 KB | 0644 |
|
_tzhelper.py | File | 3.12 KB | 0644 |
|
_url.py | File | 253 B | 0644 |
|
compat.py | File | 21.91 KB | 0644 |
|
components.py | File | 13.96 KB | 0644 |
|
constants.py | File | 544 B | 0644 |
|
context.py | File | 3.93 KB | 0644 |
|
deprecate.py | File | 26.15 KB | 0644 |
|
failure.py | File | 23.38 KB | 0644 |
|
fakepwd.py | File | 5.99 KB | 0644 |
|
filepath.py | File | 57.51 KB | 0644 |
|
formmethod.py | File | 11.19 KB | 0644 |
|
htmlizer.py | File | 3.27 KB | 0644 |
|
lockfile.py | File | 7.54 KB | 0644 |
|
log.py | File | 21.95 KB | 0644 |
|
logfile.py | File | 9.85 KB | 0644 |
|
modules.py | File | 26.5 KB | 0644 |
|
monkey.py | File | 2.17 KB | 0644 |
|
procutils.py | File | 1.39 KB | 0644 |
|
randbytes.py | File | 3.87 KB | 0644 |
|
rebuild.py | File | 9.04 KB | 0644 |
|
reflect.py | File | 19.02 KB | 0644 |
|
release.py | File | 1.16 KB | 0644 |
|
roots.py | File | 7.23 KB | 0644 |
|
runtime.py | File | 6.13 KB | 0644 |
|
sendmsg.py | File | 3.34 KB | 0644 |
|
shortcut.py | File | 2.2 KB | 0644 |
|
syslog.py | File | 3.64 KB | 0644 |
|
systemd.py | File | 2.77 KB | 0644 |
|
text.py | File | 5.35 KB | 0644 |
|
threadable.py | File | 3.22 KB | 0644 |
|
threadpool.py | File | 9.61 KB | 0644 |
|
twisted-completion.zsh | File | 1.33 KB | 0644 |
|
url.py | File | 244 B | 0644 |
|
urlpath.py | File | 8.87 KB | 0644 |
|
usage.py | File | 34.19 KB | 0644 |
|
util.py | File | 27.29 KB | 0644 |
|
versions.py | File | 322 B | 0644 |
|
win32.py | File | 5.42 KB | 0644 |
|
zippath.py | File | 9.02 KB | 0644 |
|
zipstream.py | File | 9.53 KB | 0644 |
|