Was ist der einfachste Weg, ein Datum in Javascript um 1 Tag zu verringern?
-
09-06-2019 - |
Frage
Ich muss ein Javascript-Datum um einen Tag verringern, damit es über Monate/Jahre hinweg korrekt zurückgesetzt wird.Das heißt, wenn ich als Datum „Heute“ habe, möchte ich das Datum für „Gestern“ erhalten.
Es scheint immer mehr Code als nötig zu benötigen, wenn ich das mache, also frage ich mich, ob es einen einfacheren Weg gibt.
Wie geht das am einfachsten?
[Bearbeiten:Um Verwirrung in einer Antwort unten zu vermeiden, ist dies eine JavaScript Frage, keine Java-Frage.]
Lösung
var d = new Date();
d.setDate(d.getDate() - 1);
console.log(d);
Andere Tipps
var today = new Date();
var yesterday = new Date().setDate(today.getDate() -1);
day.setDate(day.getDate() -1); //will be wrong
Dies wird am falschen Tag zurückkehren.unter UTC -03:00 prüfen
var d = new Date(2014,9,19);
d.setDate(d.getDate()-1);// will return Oct 17
Besser nutzen:
var n = day.getTime();
n -= 86400000;
day = new Date(n); //works fine for everything
getDate()-1
sollte den Zweck erfüllen
Kurzes Beispiel:
var day = new Date( "January 1 2008" );
day.setDate(day.getDate() -1);
alert(day);
origDate = new Date();
decrementedDate = new Date(origDate.getTime() - (86400 * 1000));
console.log(decrementedDate);
setDate(dayValue)
dayValue
ist eine Ganzzahl von 1 bis 31, die den Tag des Monats darstellt.
aus https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Date/setDate
Das Verhalten, das Ihr (und meins) Problem löst, scheint außerhalb des Spezifikationsbereichs zu liegen.
Was benötigt zu werden scheint, sind addDate(), addMonth(), addYear() ...Funktionen.
Die Arbeit mit Datumsangaben in JS kann Kopfschmerzen bereiten.Der einfachste Weg ist also die Verwendung moment.js für beliebige Datumsoperationen.
So subtrahieren Sie einen Tag:
const date = moment().subtract(1, 'day')