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.]

War es hilfreich?

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')
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top