Étant donné deux Date()
objets, où l'un est inférieur à l'autre, comment faire une boucle tous les jours entre les dates?
for(loopDate = startDate; loopDate < endDate; loopDate += 1)
{
}
Ce genre de boucle fonctionnerait-il? Mais comment puis-je ajouter un jour au compteur de boucles?
Merci!
javascript
date
loops
Tom Gullen
la source
la source
Date.now()
lors de la définitionnow
?new Date()
renvoie la date actuelle comme objet par défaut . L'appelDate
sans lenew
constructeur vous donne juste une chaîne de date que vous convertissez ensuite en objet Date de toute façon?new Date(2012, 0, 1);
ramassais le mauvais jour (un jour avant), celanew Date(Date.UTC(2012, 0, 1))
fonctionnait bien.Basé sur la réponse de Tom Gullen.
la source
Date
est un développeur d'Si startDate et endDate sont effectivement des objets de date, vous pouvez les convertir en nombre de millisecondes depuis le 1er janvier 1970 à minuit, comme ceci:
Ensuite, vous pouvez faire une boucle de l'un à l'autre en incrémentant loopTime de 86400000 (1000 * 60 * 60 * 24) - nombre de millisecondes en un jour:
la source
86400000
secondes dans une journée. Cette boucle est fragile aux changements d'heure d'été et à d'autres conditions de bord.Je pense avoir trouvé une réponse encore plus simple, si vous vous autorisez à utiliser Moment.js :
la source
Voici un code de travail simple, a fonctionné pour moi
la source
la source
Sur la base de la réponse de Tabare, j'ai dû ajouter un jour de plus à la fin, car le cycle est coupé avant
la source
Si vous voulez un moyen efficace avec des millisecondes:
la source
Supposons que vous ayez obtenu la date de début et la date de fin de l'interface utilisateur et que vous les ayez stockées dans la variable de portée du contrôleur.
Ensuite, déclarez un tableau qui sera réinitialisé à chaque appel de fonction afin que lors du prochain appel de la fonction, les nouvelles données puissent être stockées.
var dayLabel = [];
N'oubliez pas d'utiliser la nouvelle date (votre variable de départ) car si vous n'utilisez pas la nouvelle date et que vous l'assignez directement à la variable, la fonction setDate changera la valeur de la variable d'origine à chaque itération.
la source
Basé sur la réponse de Jayarjo:
la source