docs: def process_resource_schedule(self, i, value, time_type):
          """Does the resource tag schedule and policy match the current time."""
          rid = i[self.id_key]
          # this is to normalize trailing semicolons which when done allows
          # dateutil.parser.parse to process: value='off=(m-f,1);' properly.
          # before this normalization, some cases would silently fail.
          value = ';'.join(filter(None, value.split(';')))
          if self.parser.has_resource_schedule(value, time_type):
              schedule = self.parser.parse(value)
          elif self.parser.keys_are_valid(value):
              # respect timezone from tag
              raw_data = self.parser.raw_data(value)
              if 'tz' in raw_data:
                  schedule = dict(self.default_schedule)
                  schedule['tz'] = raw_data['tz']
              else:
                  schedule = self.default_schedule
          else:
              schedule = None
          if schedule is None:
              log.warning(
                  "Invalid schedule on resource:%s value:%s", rid, value)
              self.parse_errors.append((rid, value))
              return False
          tz = self.get_tz(schedule['tz'])
          if not tz:
              log.warning(
                  "Could not resolve tz on resource:%s value:%s", rid, value)
              self.parse_errors.append((rid, value))
              return False
          now = datetime.datetime.now(tz).replace(
              minute=0, second=0, microsecond=0)
          now_str = now.strftime("%Y-%m-%d")
          if 'skip-days-from' in self.data:
              values = ValuesFrom(self.data['skip-days-from'], self.manager)
              self.skip_days = values.get_values()
          else:
              self.skip_days = self.data.get('skip-days', [])
          if now_str in self.skip_days:
              return False
          return self.match(now, schedule)