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.

12voto

Joshua Punkte 1883

Das Datum in Teile aufteilen und dann ein neues Datum mit den angepassten Werten zurückgeben

function DateAdd(date, type, amount){
    var y = date.getFullYear(),
        m = date.getMonth(),
        d = date.getDate();
    if(type === 'y'){
        y += amount;
    };
    if(type === 'm'){
        m += amount;
    };
    if(type === 'd'){
        d += amount;
    };
    return new Date(y, m, d);
}

Denken Sie daran, dass die Monate auf Null basieren, die Tage jedoch nicht. d.h. neues Datum(2009, 1, 1) == 01. Februar 2009, neues Datum(2009, 1, 0) == 31. Januar 2009;

8voto

Constantin Punkte 71

Einige Leute schlugen vor, moment.js zu verwenden, um sich das Leben bei der Handhabung von Daten in js zu erleichtern. Seit diesen Antworten ist einige Zeit vergangen, und es ist bemerkenswert, dass die Autoren von moment.js raten jetzt von der Verwendung ab . Vor allem wegen seiner Größe und der fehlenden Unterstützung für das Schütteln von Bäumen.

Wenn Sie den Weg über die Bibliothek gehen wollen, verwenden Sie eine Alternative wie Luxon . Es ist deutlich kleiner (aufgrund der geschickten Nutzung des Intl Objekt und Unterstützung für Tree-Shaking) und genauso vielseitig wie moment.js.

Um 5 Tage von heute an in Luxon zurückzugehen, würden Sie das tun:

import { DateTime } from 'luxon'

DateTime.now().minus({ days: 5 });

5voto

Petr Makarov Punkte 51
function addDays (date, daysToAdd) {
  var _24HoursInMilliseconds = 86400000;
  return new Date(date.getTime() + daysToAdd * _24HoursInMilliseconds);
};

var now = new Date();

var yesterday = addDays(now, - 1);

var tomorrow = addDays(now, 1);

4voto

Manoj Jha Punkte 39

Siehe den folgenden Code, subtrahieren Sie die Tage von dem aktuellen Datum. Stellen Sie außerdem den Monat entsprechend dem subtrahierten Datum ein.

var today = new Date();
var substract_no_of_days = 25;

today.setTime(today.getTime() - substract_no_of_days* 24 * 60 * 60 * 1000);
var substracted_date = (today.getMonth()+1) + "/" +today.getDate() + "/" + today.getFullYear();

alert(substracted_date);

2voto

UtkarshPramodGupta Punkte 6286

Verwenden Sie MomentJS .

function getXDaysBeforeDate(referenceDate, x) {
  return moment(referenceDate).subtract(x , 'day').format('MMMM Do YYYY, h:mm:ss a');
}

var yourDate = new Date(); // let's say today
var valueOfX = 7; // let's say 7 days before

console.log(getXDaysBeforeDate(yourDate, valueOfX));

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

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