Date actuelle convertie en 10 jours avant et 10 jours après

Aug 19 2020

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 fromaujourd'hui et 10 jours beforeaujourd'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

2 Sascha Aug 19 2020 at 21:55

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, getDateajoutez 10 pour les jours supplémentaires et setDateavec 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, getMonthet 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));

2 Hasan_Naser Aug 19 2020 at 21:51

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));
       

1 Chilarai Aug 19 2020 at 21:41

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));
1 Ashok Aug 19 2020 at 21:47

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.

ThaekeHekkenberg Aug 19 2020 at 21:40

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!

messerbill Aug 19 2020 at 21:42

Vous pouvez convertir toutes les dates en timestampet 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))