var range = getDates(new Date(), new Date().addDays(7));
Je voudrais que "range" soit un tableau d'objets de date, un pour chaque jour entre les deux dates.
L'astuce est qu'il doit également gérer les limites des mois et des années.
javascript
node.js
date
datetime
date-range
Scott Klarenbach
la source
la source
startDate
etendDate
? Parce que si lstartDate
'heure est postérieure à lstopDate
' heure, elle ne sera pas inclusestopDate
dans le résultat, non?Essayez ceci, n'oubliez pas d'inclure moment js,
la source
var dateArray = [];
Détails icivar currentDate = moment(startDate);
si vous utilisez cette méthode deux fois aux mêmes dates moment.js, vous serez surpris de savoir pourquoi cela fonctionne la première fois. Cela se produit parce que javascripts passe des objets par référence, de sorte que la fonction finit par utiliser la startDate deux fois (qui est déjà mutée). La mise à jour du correctif ci-dessus garantit que vous travaillez avec de nouveaux et uniques objets moment js dans la portée de la fonction. Vérifiez ce violonJ'ai regardé tous ceux ci-dessus. J'ai fini par m'écrire. Vous n'avez pas besoin de momentjs pour cela . Une boucle for native est suffisante et a plus de sens car une boucle for existe pour compter les valeurs dans une plage.
Bon mot:
Version longue
Liste des dates entre:
Jours entre une date passée et maintenant:
la source
getDaysArray
? Pas les jours entre eux.for (var arr=[], dt=new Date(start), ...)
. ;-)J'utilise moment.js et Twix.js, ils fournissent un très bon support pour la manipulation de la date et de l'heure
J'ai ceci en cours d'exécution sur http://jsfiddle.net/Lkzg1bxb/
la source
la source
la source
Si vous utilisez moment, vous pouvez utiliser leur "plugin officiel" pour les plages
moment-range
et cela devient trivial.exemple de nœud de plage de moment:
exemple de navigateur de moment-intervalle:
exemple de date fns:
Si vous utilisez,
date-fns
alorseachDay
c'est votre ami et vous obtenez de loin la réponse la plus courte et la plus concise:la source
Je viens de tomber sur cette question, le moyen le plus simple de le faire est d'utiliser le moment:
Vous devez d'abord installer le moment et la plage de moment:
la source
J'utilise la solution @Mohammed Safeer depuis un moment et j'ai apporté quelques améliorations. L'utilisation de dates formatées est une mauvaise pratique lorsque vous travaillez dans vos contrôleurs.
moment().format()
ne doit être utilisé qu'à des fins d'affichage dans les vues. Souvenez-vous également que celamoment().clone()
garantit la séparation des paramètres d'entrée, ce qui signifie que les dates d'entrée ne sont pas modifiées. Je vous encourage fortement à utiliser moment.js lorsque vous travaillez avec des dates.Usage:
startDate
,endDate
paramètresinterval
Le paramètre est facultatif et est défini par défaut sur «jours». Utilisez les intervalles supportés par la.add()
méthode (moment.js). Plus de détails icitotal
paramètre est utile lors de la spécification des intervalles en minutes. La valeur par défaut est 1.Invoquer:
Fonction:
la source
En utilisant ES6, vous avez Array.from, ce qui signifie que vous pouvez écrire une fonction vraiment élégante, qui permet des intervalles dynamiques (heures, jours, mois).
la source
new Date(2017,12,30)
est le 30 janvier 2018, pour moi, la plage de dates commence le 29 janvier 2018. Tous les jours ne durent pas 8,64e7 ms (24 h) lorsque l'heure d'été est observée. ;-)Je travaillais récemment avec moment.js, la suite a fait l'affaire.
Le résultat serait:
la source
la source
var
avantstrDate
dans la boucle while!d3js fournit de nombreuses fonctions pratiques et inclut d3.time pour des manipulations faciles de la date
https://github.com/d3/d3-time
Pour votre demande spécifique:
UTC
ou heure locale
plage sera un tableau d'objets de date correspondant à la première valeur possible pour chaque jour
vous pouvez changer timeDay en timeHour, timeMonth etc. pour les mêmes résultats à des intervalles différents
la source
Voici une ligne unique qui ne nécessite aucune bibliothèque au cas où vous ne voudriez pas créer une autre fonction. Remplacez simplement startDate (à deux endroits) et endDate (qui sont des objets de date js) par vos variables ou valeurs de date. Bien sûr, vous pouvez l'envelopper dans une fonction si vous préférez
la source
J'utilise cette fonction
la source
J'utilise une simple boucle while pour calculer les dates intermédiaires
la source
Remarque: je sais que c'est légèrement différent de la solution demandée, mais je pense que beaucoup la trouveront utile.
Si vous voulez trouver chaque intervalle "x" (jours, mois, années, etc ...) entre deux dates, moment.js et les packages d'extension moment-range activent cette fonctionnalité.
Par exemple, pour trouver chaque 30e jour entre deux dates :
la source
Générez un tableau d'années:
Générez un tableau pour un mois:
Générez des tableaux pendant des jours:
la source
Vous pouvez le faire facilement en utilisant momentJS
Ajoutez du moment à vos dépendances
Puis importez-le dans votre fichier
Ensuite, utilisez le code suivant pour obtenir la liste de toutes les dates entre deux dates
la source
Cela peut aider quelqu'un,
https://gist.github.com/pranid/3c78f36253cbbc6a41a859c5d718f362.js
la source
Voici une méthode prédéfinie qui acceptera des dates ou des chaînes Moment ou un mélange comme entrées et générera un tableau de dates en tant que dates Moment. Si vous ne voulez pas de dates Moment comme sortie, modifiez ce que la
map()
méthode renvoie.la source
@ la solution de softvar, mais avec l'option des dates de travail
la source
Fonction:
Usage:
J'espère que ça vous aide
la source