code: def get_time_from_str(when):
      
      zero_oclock_today = datetime.now(tzlocal()).replace(
              hour=0, minute=0, second=0, microsecond=0)
  
      try:
          event_time = dateutil_parse(when, default=zero_oclock_today)
      except ValueError:
          struct, result = fuzzy_date_parse(when)
          if not result:
              raise ValueError('Date and time is invalid: %s' % (when))
          event_time = datetime.fromtimestamp(time.mktime(struct), tzlocal())
  
      return event_time
docs: Convert a string to a time: first uses the dateutil parser, falls back
      on fuzzy matching with parsedatetime