J'ai une table html. Une colonne contient des valeurs de date. Je souhaite extraire month de ces dates et l'imprimer dans la console. Le format de la date est aaaa-MM-jj . Voici mon code:

var myTable = document.getElementById('openDispatchNoteTable');

for (var i = 0 ; i < myTable.rows.length ; i++) {
    console.log("date : " + myTable.rows[i].cells[6].innerText);
}

myTable.rows[i].cells[6].innerText donne 2018-November-14 comme sortie.

Pouvez-vous m'aider à résoudre ce problème?

1
Ravindu Saluwadana 20 nov. 2018 à 13:55

3 réponses

Meilleure réponse

Si le format est le même dans toutes les sorties - alors utilisez regexp .innerText.match(/[a-z]+/i)[0]

console.log(document.querySelector('div').innerText.match(/[a-z]+/i)[0])
<div>2018-November-14</div>

J'ai également trouvé une bonne solution internationalisée ici: obtenir le nom du mois à partir de la date La deuxième meilleure réponse utilise { {X0}}.

2
Smollet777 20 nov. 2018 à 11:10

Dans votre cas, vous pouvez utiliser la méthode replace () de Javascript.

Utilisez cette replace(/[^a-zA-Z ]/g, "") expression régulière qui remplacera tout par "" les autres caractères.

var myTable = document.getElementById("myTable");
for (var i = 1; i < myTable.rows.length; i++) {
  console.log("Actual Date : " + myTable.rows[i].cells[0].innerText);
  console.log("Only Month : " + myTable.rows[i].cells[0].innerText.replace(/[^a-zA-Z ]/g, ""));
}
<table id="myTable" border='1'>
  <tr>
    <th>Date</th>
  </tr>
  <tr>
    <td>
      28-November-2018
    </td>
  </tr>
  <tr>
    <td>
      29-November-2018
    </td>
  </tr>
  <tr>
    <td>
      30-November-2018
    </td>
  </tr>
</table>
1
Smollet777 20 nov. 2018 à 11:21

Je recommande fortement d'utiliser momentJS. Il dispose d'une API très élaborée pour gérer des choses comme votre besoin. Dans ce cas, l'objet moment peut obtenir la date dans votre format, puis vous pouvez utiliser la fonction month pour extraire le mois.

0
Gilad Bar 20 nov. 2018 à 11:01