880 Stimmen

Wie subtrahiert man Tage von einem einfachen Datum?

Gibt es eine einfache Möglichkeit, ein olain JavaScript aufzunehmen? Date (z. B. heute) und X Tage zurückgehen?

Wenn ich also zum Beispiel das Datum 5 Tage vor dem heutigen Tag berechnen möchte.

1376voto

Stephen Wrighton Punkte 34868

Versuchen Sie so etwas:

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

Beachten Sie, dass dadurch das Datumsobjekt geändert wird und der Zeitwert des aktualisierten Datums zurückgegeben wird.

var d = new Date();

document.write('Today is: ' + d.toLocaleString());

d.setDate(d.getDate() - 5);

document.write('<br>5 days ago was: ' + d.toLocaleString());

129voto

karim79 Punkte 333786
var dateOffset = (24*60*60*1000) * 5; //5 days
var myDate = new Date();
myDate.setTime(myDate.getTime() - dateOffset);

Wenn Sie in Ihrer Webanwendung viele kopflastige Datumsmanipulationen vornehmen, DateJS wird Ihr Leben sehr viel einfacher machen:

http://simonwillison.net/2007/Dec/3/datejs/

71voto

Chris Nielsen Punkte 14305

Es geht ungefähr so:

var d = new Date(); // today!
var x = 5; // go back 5 days!
d.setDate(d.getDate() - x);

41voto

BondAddict Punkte 351

Wenn Sie stattdessen alles in einer Zeile haben wollen.

In 5 Tagen ab heute

//past
var fiveDaysAgo = new Date(new Date().setDate(new Date().getDate() - 5));
//future
var fiveDaysInTheFuture = new Date(new Date().setDate(new Date().getDate() + 5));

5 Tage ab einem bestimmten Datum

 var pastDate = new Date('2019-12-12T00:00:00');

 //past
 var fiveDaysAgo = new Date(new Date().setDate(pastDate.getDate() - 5));
 //future
 var fiveDaysInTheFuture = new Date(new Date().setDate(pastDate.getDate() + 5));

Ich habe eine Funktion geschrieben, die Sie verwenden können.

function AddOrSubractDays(startingDate, number, add) {
  if (add) {
    return new Date(new Date().setDate(startingDate.getDate() + number));
  } else {
    return new Date(new Date().setDate(startingDate.getDate() - number));
  }
}

console.log('Today : ' + new Date());
console.log('Future : ' + AddOrSubractDays(new Date(), 5, true));
console.log('Past : ' + AddOrSubractDays(new Date(), 5, false));

38voto

awjr Punkte 566

Ich habe festgestellt, dass getDays+ X nicht über Tages-/Monatsgrenzen hinweg funktioniert. Die Verwendung von getTime funktioniert, solange Ihr Datum nicht vor 1970 liegt.

var todayDate = new Date(), weekDate = new Date();
weekDate.setTime(todayDate.getTime()-(7*24*3600000));

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X