def testForTimeZone(name, expectedOffsetDST, expectedOffsetSTD): setTZ(name) localDST = mktime((2006, 6, 30, 0, 0, 0, 4, 181, 1)) localSTD = mktime((2007, 1, 31, 0, 0, 0, 2, 31, 0)) tzDST = FixedOffsetTimeZone.fromLocalTimeStamp(localDST) tzSTD = FixedOffsetTimeZone.fromLocalTimeStamp(localSTD) self.assertEquals(tzDST.tzname(localDST), "UTC{0}".format(expectedOffsetDST)) self.assertEquals(tzSTD.tzname(localSTD), "UTC{0}".format(expectedOffsetSTD)) self.assertEquals(tzDST.dst(localDST), timedelta(0)) self.assertEquals(tzSTD.dst(localSTD), timedelta(0)) def timeDeltaFromOffset(offset): assert len(offset) == 5 sign = offset[0] hours = int(offset[1:3]) minutes = int(offset[3:5]) if sign == "-": hours = -hours minutes = -minutes else: assert sign == "+" return timedelta(hours=hours, minutes=minutes) self.assertEquals(tzDST.utcoffset(localDST), timeDeltaFromOffset(expectedOffsetDST)) self.assertEquals(tzSTD.utcoffset(localSTD), timeDeltaFromOffset(expectedOffsetSTD))
def testForTimeZone(name, expectedOffsetDST, expectedOffsetSTD): setTZ(name) localDST = mktime((2006, 6, 30, 0, 0, 0, 4, 181, 1)) localSTD = mktime((2007, 1, 31, 0, 0, 0, 2, 31, 0)) tzDST = FixedOffsetTimeZone.fromLocalTimeStamp(localDST) tzSTD = FixedOffsetTimeZone.fromLocalTimeStamp(localSTD) self.assertEqual(tzDST.tzname(localDST), f"UTC{expectedOffsetDST}") self.assertEqual(tzSTD.tzname(localSTD), f"UTC{expectedOffsetSTD}") self.assertEqual(tzDST.dst(localDST), timedelta(0)) self.assertEqual(tzSTD.dst(localSTD), timedelta(0)) def timeDeltaFromOffset(offset): assert len(offset) == 5 sign = offset[0] hours = int(offset[1:3]) minutes = int(offset[3:5]) if sign == "-": hours = -hours minutes = -minutes else: assert sign == "+" return timedelta(hours=hours, minutes=minutes) self.assertEqual(tzDST.utcoffset(localDST), timeDeltaFromOffset(expectedOffsetDST)) self.assertEqual(tzSTD.utcoffset(localSTD), timeDeltaFromOffset(expectedOffsetSTD))
def formatTime( when: Optional[float], timeFormat: Optional[str] = timeFormatRFC3339, default: str = "-", ) -> str: """ Format a timestamp as text. Example:: >>> from time import time >>> from twisted.logger import formatTime >>> >>> t = time() >>> formatTime(t) u'2013-10-22T14:19:11-0700' >>> formatTime(t, timeFormat="%Y/%W") # Year and week number u'2013/42' >>> @param when: A timestamp. @param timeFormat: A time format. @param default: Text to return if C{when} or C{timeFormat} is L{None}. @return: A formatted time. """ if timeFormat is None or when is None: return default else: tz = FixedOffsetTimeZone.fromLocalTimeStamp(when) datetime = DateTime.fromtimestamp(when, tz) return str(datetime.strftime(timeFormat))
def formatTime(when, timeFormat=timeFormatRFC3339, default=u"-"): """ Format a timestamp as text. Example:: >>> from time import time >>> from twisted.logger import formatTime >>> >>> t = time() >>> formatTime(t) u'2013-10-22T14:19:11-0700' >>> formatTime(t, timeFormat="%Y/%W") # Year and week number u'2013/42' >>> @param when: A timestamp. @type then: L{float} @param timeFormat: A time format. @type timeFormat: L{unicode} or L{None} @param default: Text to return if C{when} or C{timeFormat} is L{None}. @type default: L{unicode} @return: A formatted time. @rtype: L{unicode} """ if (timeFormat is None or when is None): return default else: tz = FixedOffsetTimeZone.fromLocalTimeStamp(when) datetime = DateTime.fromtimestamp(when, tz) return unicode(datetime.strftime(timeFormat))