def getUntilDate()

in src/zonal/zone.py [0:0]


    def getUntilDate(self):

        if self._cached_until is None:
            year = 9999
            month = 12
            day = 1
            hours = 0
            minutes = 0
            seconds = 0
            mode = None
            if self.until and not self.until.startswith("#"):
                splits = self.until.split(" ")
                year = int(splits[0])
                month = 1
                day = 1
                hours = 0
                minutes = 0
                seconds = 0
                mode = None
                if len(splits) > 1 and not splits[1].startswith("#"):
                    month = int(rule.Rule.MONTH_NAME_TO_POS[splits[1]])
                    if len(splits) > 2 and not splits[2].startswith("#"):
                        if splits[2] == "lastSun":
                            dt = DateTime(year=year, month=month, day=1)
                            dt.setDayOfWeekInMonth(-1, DateTime.SUNDAY)
                            splits[2] = dt.getDay()
                        elif splits[2] == "lastSat":
                            dt = DateTime(year=year, month=month, day=1)
                            dt.setDayOfWeekInMonth(-1, DateTime.SATURDAY)
                            splits[2] = dt.getDay()
                        elif splits[2] == "Sun>=1":
                            dt = DateTime(year=year, month=month, day=1)
                            dt.setNextDayOfWeek(1, DateTime.SUNDAY)
                            splits[2] = dt.getDay()
                        elif splits[2] == "Sun>=8":
                            dt = DateTime(year=year, month=month, day=1)
                            dt.setNextDayOfWeek(8, DateTime.SUNDAY)
                            splits[2] = dt.getDay()
                        day = int(splits[2])
                        if len(splits) > 3 and not splits[3].startswith("#"):
                            splits = splits[3].split(":")
                            hours = int(splits[0])
                            minutes = int(splits[1][:2])
                            if len(splits[1]) > 2:
                                mode = splits[1][2:]
                            else:
                                mode = None
                            if len(splits) > 2:
                                seconds = int(splits[2])

            dt = DateTime(year=year, month=month, day=day, hours=hours, minutes=minutes, seconds=seconds)
            self._cached_until = utils.DateTime(dt, mode)
        return self._cached_until