2008-08-28 18 views
14

J'ai besoin de décrémenter une date Javascript d'un jour, afin qu'elle revienne correctement sur plusieurs mois/années. C'est, si j'ai une date de 'Aujourd'hui', je veux obtenir la date pour 'Hier'.Quel est le moyen le plus simple de décrémenter une date en Javascript d'un jour?

Il semble toujours prendre plus de code que nécessaire quand je fais cela, donc je me demande s'il y a un moyen simple.

Quelle est la manière la plus simple de le faire?

[Edit:. Juste pour éviter toute confusion dans une réponse ci-dessous, c'est un JavaScript question, pas Java un]

+0

Voici une fonction qui peut faire les deux incrémenter et décrémenter: http://stackoverflow.com/a/29199863/4021614 –

Répondre

27

var d = new Date(); 
 
d.setDate(d.getDate() - 1); 
 

 
console.log(d);

+4

cela retournera un mauvais jour. sous UTC -03: 00, vérifiez var d = new Date (2014,9,19) d.setDate (d.getDate() - 1); // retournera Oct 17 –

+1

il renvoie également une mauvaise année. new Date (new Date(). getDate() - 1) retourne 1969 pour moi –

5
var today = new Date(); 
var yesterday = new Date().setDate(today.getDate() -1); 
3

getDate()-1 devrait faire la tour

Exemple rapide:

var day = new Date("January 1 2008"); 
day.setDate(day.getDate() -1); 
alert(day); 
3
origDate = new Date(); 
decrementedDate = new Date(sDate.getTime() - (86400 * 1000)); 

console.log(decrementedDate); 
+0

Cela fonctionne très bien! –

3
day.setDate(day.getDate() -1); //will be wrong 

ce sera de retour mauvais jour. en UTC -03: 00, vérifiez

var d = new Date(2014,9,19); 
d.setDate(d.getDate()-1);// will return Oct 17 

meilleure utilisation:

var n = day.getTime(); 
n -= 86400000; 
day = new Date(n); //works fine for everything