Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
tzinfo.py158 linesDownload Raw Back to isodate
1'''2This module provides some datetime.tzinfo implementations.3 4All those classes are taken from the Python documentation.5'''6from datetime import timedelta, tzinfo7import time8 9ZERO = timedelta(0)10# constant for zero time offset.11 12 13class Utc(tzinfo):14    '''UTC15 16    Universal time coordinated time zone.17    '''18 19    def utcoffset(self, dt):20        '''21        Return offset from UTC in minutes east of UTC, which is ZERO for UTC.22        '''23        return ZERO24 25    def tzname(self, dt):26        '''27        Return the time zone name corresponding to the datetime object dt,28        as a string.29        '''30        return "UTC"31 32    def dst(self, dt):33        '''34        Return the daylight saving time (DST) adjustment, in minutes east35        of UTC.36        '''37        return ZERO38 39    def __reduce__(self):40        '''41        When unpickling a Utc object, return the default instance below, UTC.42        '''43        return _Utc, ()44 45 46UTC = Utc()47# the default instance for UTC.48 49 50def _Utc():51    '''52    Helper function for unpickling a Utc object.53    '''54    return UTC55 56 57class FixedOffset(tzinfo):58    '''59    A class building tzinfo objects for fixed-offset time zones.60 61    Note that FixedOffset(0, 0, "UTC") or FixedOffset() is a different way to62    build a UTC tzinfo object.63    '''64 65    def __init__(self, offset_hours=0, offset_minutes=0, name="UTC"):66        '''67        Initialise an instance with time offset and name.68        The time offset should be positive for time zones east of UTC69        and negate for time zones west of UTC.70        '''71        self.__offset = timedelta(hours=offset_hours, minutes=offset_minutes)72        self.__name = name73 74    def utcoffset(self, dt):75        '''76        Return offset from UTC in minutes of UTC.77        '''78        return self.__offset79 80    def tzname(self, dt):81        '''82        Return the time zone name corresponding to the datetime object dt, as a83        string.84        '''85        return self.__name86 87    def dst(self, dt):88        '''89        Return the daylight saving time (DST) adjustment, in minutes east of90        UTC.91        '''92        return ZERO93 94    def __repr__(self):95        '''96        Return nicely formatted repr string.97        '''98        return "<FixedOffset %r>" % self.__name99 100 101STDOFFSET = timedelta(seconds=-time.timezone)102# locale time zone offset103 104# calculate local daylight saving offset if any.105if time.daylight:106    DSTOFFSET = timedelta(seconds=-time.altzone)107else:108    DSTOFFSET = STDOFFSET109 110DSTDIFF = DSTOFFSET - STDOFFSET111# difference between local time zone and local DST time zone112 113 114class LocalTimezone(tzinfo):115    """116    A class capturing the platform's idea of local time.117    """118 119    def utcoffset(self, dt):120        '''121        Return offset from UTC in minutes of UTC.122        '''123        if self._isdst(dt):124            return DSTOFFSET125        else:126            return STDOFFSET127 128    def dst(self, dt):129        '''130        Return daylight saving offset.131        '''132        if self._isdst(dt):133            return DSTDIFF134        else:135            return ZERO136 137    def tzname(self, dt):138        '''139        Return the time zone name corresponding to the datetime object dt, as a140        string.141        '''142        return time.tzname[self._isdst(dt)]143 144    def _isdst(self, dt):145        '''146        Returns true if DST is active for given datetime object dt.147        '''148        tt = (dt.year, dt.month, dt.day,149              dt.hour, dt.minute, dt.second,150              dt.weekday(), 0, -1)151        stamp = time.mktime(tt)152        tt = time.localtime(stamp)153        return tt.tm_isdst > 0154 155 156# the default instance for local time zone.157LOCAL = LocalTimezone()158 
codekingpro/portable-devtools · Team Ai