Moment.js – Comment détecter le temps d'été et ajouter un jour

Je dois créer des Objets de date à partir des chaînes de données Date pour chaque heure de chaque jour depuis l'an 2000.

Les cordes se ressemblent à chaque heure, dans un format de Month/Day/Year Hour

 "04/02/2000 01", "04/02/2000 02", "04/02/2000 03" ...all the way to... "04/02/2000 24" 

Maintenant, j'ai le code suivant, qui fonctionne bien, sauf pour les jours avec l'heure d'été …

  // Split At Space var splitDate = "04/02/2000 24".split(/[ ]+/); var hour = splitDate[1]; var day = splitDate[0]; // Split At Slashes var dayArray = day.split("/"); if (hour === "24") { // Months are zero-based, so subtract 1 from the month date = new Date(Date.UTC( dayArray[2], parseInt(dayArray[0] - 1), dayArray[1], 0, 0, 0 )); date.setDate(date.getDate() + 1); } else { // Months and Hours are zero-based, so subtract 1 from each date = new Date(Date.UTC( dayArray[2], parseInt(dayArray[0] - 1), dayArray[1], hour, 0, 0 )); }; 

Les jours avec l'heure d'été, comme le 04/02/2000 ajout d'un jour ne fonctionne pas si l'heure est 24 . Au lieu de cela, il revient simplement Sun, 02 Apr 2000 23:00:00 GMT

Avec Moment.js, est-il possible de détecter un jour de DST et de faire fonctionner ce code correctement?

Pour détecter l'heure d'été, utilisez la méthode .isDST() : http://momentjs.com/docs/#/query/is-daylight-saving-time/

 moment([2011, 2, 12]).isDST(); // false, March 12 2011 is not DST moment([2011, 2, 14]).isDST(); // true, March 14 2011 is DST 

À l'aide de ce test, vous devriez pouvoir déterminer comment modifier le comportement de votre programme en conséquence.