107 votes

JavaScript : comment calculer la date d'il y a 2 jours ?

Duplicata possible :
Soustraire des jours d'une date en javascript

J'ai un JavaScript qui renvoie une date datant de 2 jours. Il se présente comme suit :

var x;
var m_names = new Array("January", "February", "March", 
    "April", "May", "June", "July", "August", "September", 
    "October", "November", "December");

var d = new Date();
var twoDaysAgo = d.getDate()-2;  //change day here
var curr_month = d.getMonth();
var curr_year = d.getFullYear();
var x = twoDaysAgo + "-" + m_names[curr_month] + "-" + curr_year;

document.write(x);

En supposant qu'aujourd'hui est le 12 décembre 2012, l'opération ci-dessus renverra la date du 10 décembre 2012. Je ne pense pas que cela fonctionnera de manière dynamique si nous avançons dans un nouveau mois, OU si nous changeons le jour de -2 à -15. Cela ne fonctionnera qu'à partir du 3 du mois.

Comment puis-je modifier cela de sorte que lorsque nous sommes le 12 décembre 2012 aujourd'hui et que je veux qu'il me renvoie la date d'il y a 15 jours, ce soit le 27 novembre 2012... et non le 3 décembre 2012 ?

Toute aide est appréciée. Merci ! Je suis un débutant en Javascript.

190voto

RobG Points 41170

Si vous disposez d'un objet date, vous pouvez le définir sur deux jours précédents en soustrayant deux de la date :

var d = new Date();
d.setDate(d.getDate() - 2);
console.log(d.toString());

// First of month
var c = new Date(2017,1,1); // 1 Feb -> 30 Jan
c.setDate(c.getDate() - 2);
console.log(c.toString());

// First of year
var b = new Date(2018,0,1); // 1 Jan -> 30 Dec
b.setDate(b.getDate() - 2);
console.log(b.toString());

47voto

pfried Points 1420

Vous pouvez faire ce qui suit

​var date = new Date();
var yesterday = date - 1000 * 60 * 60 * 24 * 2;   // current date's milliseconds - 1,000 ms * 60 s * 60 mins * 24 hrs * (# of days beyond one to go back)
yesterday = new Date(yesterday);
console.log(yesterday);​

La date est disponible sous la forme d'un nombre de millisecondes, vous prenez aujourd'hui, soustrayez deux jours et créez une nouvelle date en utilisant ce nombre de millisecondes.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X