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.