code: def extractDates(self, inp):
          
          def merge(param):
              day, time = param
              if not (day or time):
                  return None
  
              if not day:
                  return time
              if not time:
                  return day
  
              return datetime.datetime(
                  day.year, day.month, day.day, time.hour, time.minute
              )
  
          days = self.extractDays(inp)
          times = self.extractTimes(inp)
          return map(merge, zip_longest(days, times, fillvalue=None))
docs: Extract semantic date information from an input string.
          In effect, runs both parseDay and parseTime on the input
          string and merges the results to produce a comprehensive
          datetime object.
  
          Args:
              inp (str): Input string to be parsed.
  
          Returns:
              A list of datetime objects containing the extracted dates from the
              input snippet, or an empty list if not found.