Nous considérons que j'ai les dates suivantes: Le résultat que je voudrais avoir est une chose telle: p> Si j'avais une telle chose: p> Le résultat que je voudrais avoir est une chose telle: p> quoi Je voudrais faire est d'imprimer dans un tableau, tous les jours entre la date de début et la date de fin. P> J'essayais quelque chose comme ça, mais j'ai des problèmes: P> < Pré> xxx pré> p>
3 Réponses :
Une approche serait d'extraire les "parties" numéiques de vos chaînes de la date d'entrée Une fois que vous avez ces pièces de date en tant qu'élevers, la plage de dates peut être itérale via une boucle pour la boucle où, par itération, vous ajoutez un objet d'élément au résultat code> Array basé sur l'itération actuelle de cette boucle: P> par itération, vous vérifieriez également si la date suivante sera itératée est égale au numéro "Pièces" de la date p> à partir de code> et
à code> en félicitant contre
/ code> caractères: XXX PRE>
à code> (ainsi que d'incrémenter le mois et l'année en cours selon les besoins): p>
const numDaysInMonth = (month, year) => new Date(year, month, 0).getDate()
const extractParts = (date) => date.split("/").map(part => Number.parseInt(part));
const calcDaysBetweenDates = (from, to) => {
const [fromDay, fromMonth, fromYear] = extractParts(from);
const [toDay, toMonth, toYear] = extractParts(to);
const result = [];
// Iterate over from-to range starting at from year/month/day
for (let year = fromYear, month = fromMonth, day = fromDay;;) {
// Add item object for current day/month/year to result array
result.push({
day,
month,
year
});
// Increment day
day++;
// If next day past current month, reset day, increment month
if (day > numDaysInMonth(month, year)) {
month++;
day = 1;
}
// If next month past current year, reset month, increment year
if (month > 12) {
month = 1;
year++;
}
// If next day and month and year past to day/month/year, exit loop
if (day >= toDay && month >= toMonth && year >= toYear) {
break;
}
}
// Add to date for range inclusivity
result.push({
day: toDay,
month: toMonth,
year: toYear
});
return result;
}
console.log(calcDaysBetweenDates("21/09/2019", "29/09/2019"));
console.log(calcDaysBetweenDates("21/09/2019", "7/10/2019"));
console.log(calcDaysBetweenDates("25/12/2019", "5/1/2020"));
Il semble y avoir un problème avec votre script, avec la deuxième date: "09/21/2019", "7/10/2019" Cela me donne aussi 09/11/2019, mais cette date n'existe pas.
@Paul désolé pour cela, calculait le nombre de jours pour le mois prochain plutôt que le courant. Juste mis à jour Script - Cela aide-t-il?
Vous pouvez ajouter la date d'une date de démarrage de la date et de la date d'objection prendra soin de la validation de la nouvelle date, c'est-à-dire le mois prochain ou l'année suivante, ainsi que tous, répétez la date de fin de la date de fin p> TODATE code> est supérieure à la date de début fromdate code>.
let from = "23/09/2019";
let to = "29/10/2019";
// convert to date object by interchanging date/month expected by Date function
let fromDate = new Date(from.replace(/([0-9]+)\/([0-9]+)/,'$2/$1'));
let toDate = new Date(to.replace(/([0-9]+)\/([0-9]+)/,'$2/$1'));
let response = [];
while(toDate > fromDate){
response.push({day: fromDate.getDate(), month: fromDate.getMonth()+1, year: fromDate.getFullYear()});
fromDate.setDate(fromDate.getDate()+1) // increment date by 1
}
console.log(response)
Il semble y avoir un problème avec votre script, si vous voyez la valeur de retour de la console, les valeurs commencent à partir de la date suivante: 08/24/2019, mais la date à laquelle vous le rendez commence à partir du 09/23/2019.
mois est un tableau 0 indexé. J'ai mis à jour la réponse
Si je voulais inclure même le premier jour et ne pas l'exclure?
Vous pouvez définitivement, incrémenter après avoir poussé au tableau. Vérifier la réponse mise à jour
Cela a-t-il fonctionné pour vous?
Vous pouvez utiliser MOMENT avec plage de moments .
p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-range/4.0.2/moment-range.js"></script>
Avez-vous vu Ce ? Lorsque vous dites des problèmes, pouvez-vous décrire les problèmes que vous rencontrez?
Ceci est 3 questions dans une (parse, ajoutez 1 jour, format), qui ont tous été répondu beaucoup, à plusieurs reprises auparavant.