Date actuelle convertie en 10 jours avant et 10 jours après
J'ai ce code où je convertis la date actuelle dans ce format 2020-08-20
. Mais comment puis-je le modifier pour me donner la date 10 jours from
aujourd'hui et 10 jours before
aujourd'hui.
Par exemple, aujourd'hui 2020-08-20
, j'essaie d'obtenir 10 jours à partir d'aujourd'hui2020-08-30
C'est mon code
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
console.log(dateConverter(today));
Réponses
C'est un peu délicat. Réglez d'abord les heures de la date à 12 pour éviter les problèmes de changement d'heure été / hiver. Ensuite, getDate
ajoutez 10 pour les jours supplémentaires et setDate
avec la nouvelle valeur. Maintenant que vous avez une valeur en millisecondes, générez une nouvelle date pour obtenir un objet date. Pour la deuxième date, soustrayez 20 jours car la date d'origine a été modifiée par l'action précédente et procédez de la même manière.
Formatez la sortie pour les dates avec getFullYear
, getMonth
et getDate
. Parce que le mois est traité dans JS de 0 à 11, ajoutez 1 mois. Les mois et les jours peuvent être à 1 chiffre mais vous voulez 2 chiffres, alors ajoutez-les avant la chaîne "0"
et obtenez les 2 derniers caractères avec slice
.
Faites le format pour les deux dates et renvoyez-les sous forme de tableau.
const dateConverter = (dateIn) => {
dateIn.setHours(12);
let dateIn10days = new Date(dateIn.setDate(dateIn.getDate() + 10));
let dateFor10days = new Date(dateIn.setDate(dateIn.getDate() - 20));
let strIn10Days = dateIn10days.getFullYear() + '-' + ('0' +(dateIn10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateIn10days.getDate()).slice(-2);
let strFor10Days = dateFor10days.getFullYear() + '-' + ('0' +(dateFor10days.getMonth()+1)).slice(-2) + '-' + ('0' + dateFor10days.getDate()).slice(-2);
return [strFor10Days, strIn10Days];
}
let today = new Date();
console.log(dateConverter(today));
Ce code vous aidera
Référence JavaScript calculant la date de la date d'aujourd'hui à 7 jours avant
car après 10 jours, il suffit de convertir le - en +
const dateConverter = (dateIn) => {
var dates ={};
var days = 10; // Days you want to subtract
for(let i=0;i<days;i++){
var date = dateIn;
var last = new Date(date.getTime() - (i * 24 * 60 * 60 * 1000));
var day = last.getDate();
var month= last.getMonth()+1;
var year= last.getFullYear();
dates[i] = year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
return dates
}
var today = new Date();
console.log(dateConverter(today));
Essaye ça
const dateConverter = (dateIn) => {
var year = dateIn.getFullYear();
var month = dateIn.getMonth() + 1; // getMonth() is zero-based
var day = dateIn.getDate();
return year + "-" + month.toString().padStart(2, "0") + "-" + day.toString().padStart(2, "0");
}
var today = new Date();
var numberOfDaysToAdd = 10;
var tenDaysPlus = today.setDate(today.getDate() + numberOfDaysToAdd);
console.log(dateConverter(today));
var today = new Date();
var numberOfDaysToSubtract = 10;
var tenDaysMinus = today.setDate(today.getDate() - numberOfDaysToSubtract);
console.log(dateConverter(today));
Je vous suggère d'utiliser la bibliothèque moment mais vous voulez toujours du javascript brut
const convert = (date) => {
const pastDate = new Date(date)
pastDate.setDate(pastDate.getDate() - 10);
const futureDate = new Date(date)
futureDate.setDate(futureDate.getDate() + 10);
return { pastDate, futureDate }
}
appelez la fonction de conversion avec n'importe quelle date.
J'ai aussi déconné ça avant. Mais sur ce débordement de pile, vous pouvez trouver une très bonne réponse: Ajouter des jours à JavaScript Date
Date.prototype.addDays = function(days) {
var date = new Date(this.valueOf());
date.setDate(date.getDate() + days);
return date;
}
var date = new Date();
alert(date.addDays(5));
C'est le code tiré de ce message.
Pour soustraire des jours, remplacez simplement les "+ jours" par "- jours"
J'espère que cela a résolu votre problème!
Vous pouvez convertir toutes les dates en timestamp
et calculer simplement avec elles:
const dateTimestamp = new Date("2020-10-10").getTime()
const milisecondsInADay = 60*60*24*1000
const milisecondsInTenDays = milisecondsInADay * 10
const beforeDate = new Date(dateTimestamp - milisecondsInTenDays)
const afterDate = new Date(dateTimestamp + milisecondsInTenDays)
console.log("before", beforeDate)
console.log("after", afterDate)
console.log("initially", new Date(dateTimestamp))