¿Cómo manejarías los diferentes formatos de fechas?

Tengo diferentes tipos de formato de fechas como:

27-28 de agosto de 663 CE

22 de agosto de 1945 19 de mayo

4 de mayo de 1945 - 22 de agosto de 1945

4/5/1945

2-7-1232

03-4-1020

1/3/1(year 1)

08/09/0(year 0)

Tenga en cuenta que todos son formatos diferentes, orden diferente, algunos tienen 2 meses, algunos solo uno, traté de usarmomento js sin resultados, también intenté usarfecha js Sin embargo, no hubo suerte.

Traté de hacer algunas divisiones:

dates.push({
    Time : []
});

function doSelect(text) {
  return $wikiDOM.find(".infobox th").filter(function() {
    return $(this).text() === text;
  });
}
dateText = doSelect("Date").siblings('td').text().split(/\s+/g);
 for(var i = 0; i < dateText.length; i++) {
  d += dateText[i] + ' ';
}
dates[0].Time.push(d);

Pero el resultado es:

"Time": [
            "27 - 28 August 663 CE ",

Finalmente, lo que necesito para generar automáticamente es:

<ul class="Days">
  <li>27</li>
  <li>28</li>
</ul>

<ul class="Months">
  <li>August</li>
</ul>

<ul class="Year">
  <li>663</li>
</ul>

Y también piensa en una forma de manejarCE oAD oBC

Para lograr eso, una forma ideal que me gustaría usar es una matriz multidimensional:

time.push({
    Day : [], 
    Month : [],
    Year : [],
    Prefix : []
});

Probablemente para verificarmax 2 numbers for days, verifique meses con una lista de cadenas comoJanuary, February, March.. y luego el año min3 numbers to max 4 numbers y luego manejar elprefix with some conditionals. Pero aún así, ¿qué talyear 2 or 1? o qué tal si la fecha es02/9/1975? O con la separacióndash, serían un nuevo formato. Creo que la lógica está un poco ahí, pero ¿cómo dividiría esas fechas en una matriz multidimensional según lo anterior dado el hecho de que todos son formatos diferentes?

Respuestas a la pregunta(1)

Su respuesta a la pregunta