code: def parse_datetime(date_str):
      
      is_common_era = True
      date_str_parts = date_str.split("-")
      if date_str_parts and date_str_parts[0] == '':
          is_common_era = False
          # for now, only support BCE years
  
          # assume the datetime comes complete, but
          # when it comes only the year, add the missing datetime info:
          if len(date_str_parts) == 2:
              date_str = date_str + "-01-01T00:00:00Z"
  
      parsed_datetime = {
          'is_common_era': is_common_era,
          'parsed_datetime': None
      }
  
      if is_common_era:
          if date_str == '*':
              return parsed_datetime  # open ended.
  
          default = datetime.datetime.now().replace(
              hour=0, minute=0, second=0, microsecond=0,
              day=1, month=1
          )
          parsed_datetime['parsed_datetime'] = parse(date_str, default=default)
          return parsed_datetime
  
      parsed_datetime['parsed_datetime'] = date_str
      return parsed_datetime
docs: Parses a date string to date object.
      for BCE dates, only supports the year part.