예제 #1
0
 def __init__(self, stdabbr, stdoffset=None,
              dstabbr=None, dstoffset=None,
              start=None, end=None):
     global relativedelta
     if not relativedelta:
         from daterelativedelta import relativedelta
     self._std_abbr = stdabbr
     self._dst_abbr = dstabbr
     if stdoffset is not None:
         self._std_offset = datetime.timedelta(seconds=stdoffset)
     else:
         self._std_offset = ZERO
     if dstoffset is not None:
         self._dst_offset = datetime.timedelta(seconds=dstoffset)
     elif dstabbr and stdoffset is not None:
         self._dst_offset = self._std_offset+datetime.timedelta(hours=+1)
     else:
         self._dst_offset = ZERO
     if dstabbr and start is None:
         self._start_delta = relativedelta.relativedelta(
                 hours=+2, month=4, day=1, weekday=relativedelta.SU(+1))
     else:
         self._start_delta = start
     if dstabbr and end is None:
         self._end_delta = relativedelta.relativedelta(
                 hours=+1, month=10, day=31, weekday=relativedelta.SU(-1))
     else:
         self._end_delta = end
예제 #2
0
 def _delta(self, x, isend=0):
     kwargs = {}
     if x.month is not None:
         kwargs["month"] = x.month
         if x.weekday is not None:
             kwargs["weekday"] = relativedelta.weekday(x.weekday, x.week)
             if x.week > 0:
                 kwargs["day"] = 1
             else:
                 kwargs["day"] = 31
         elif x.day:
             kwargs["day"] = x.day
     elif x.yday is not None:
         kwargs["yearday"] = x.yday
     elif x.jyday is not None:
         kwargs["nlyearday"] = x.jyday
     if not kwargs:
         # Default is to start on first sunday of april, and end
         # on last sunday of october.
         if not isend:
             kwargs["month"] = 4
             kwargs["day"] = 1
             kwargs["weekday"] = relativedelta.SU(+1)
         else:
             kwargs["month"] = 10
             kwargs["day"] = 31
             kwargs["weekday"] = relativedelta.SU(-1)
     if x.time is not None:
         kwargs["seconds"] = x.time
     else:
         # Default is 2AM.
         kwargs["seconds"] = 7200
     if isend:
         # Convert to standard time, to follow the documented way
         # of working with the extra hour. See the documentation
         # of the tzinfo class.
         delta = self._dst_offset-self._std_offset
         kwargs["seconds"] -= delta.seconds+delta.days*86400
     return relativedelta.relativedelta(**kwargs)