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.

0voto

Bret Weinraub Punkte 1241

Ich kann date.js gut gebrauchen:

http://www.datejs.com/

d = new Date();
d.add(-10).days();  // subtract 10 days

Schön!

Die Website enthält diese Schönheit:

Datejs analysiert nicht nur Zeichenketten, sondern zerlegt sie auch sauber in zwei Teile

0voto

John Slegers Punkte 41127

Wenn Sie sowohl eine Anzahl von Tagen subtrahieren als auch das Datum in einem für Menschen lesbaren Format formatieren möchten, sollten Sie die Erstellung einer benutzerdefinierten DateHelper Objekt, das in etwa wie folgt aussieht:

var DateHelper = {
    addDays : function(aDate, numberOfDays) {
        aDate.setDate(aDate.getDate() + numberOfDays); // Add numberOfDays
        return aDate;                                  // Return the date
    },
    format : function format(date) {
        return [
           ("0" + date.getDate()).slice(-2),           // Get day and pad it with zeroes
           ("0" + (date.getMonth()+1)).slice(-2),      // Get month and pad it with zeroes
           date.getFullYear()                          // Get full year
        ].join('/');                                   // Glue the pieces together
    }
}

// With this helper, you can now just use one line of readable code to :
// ---------------------------------------------------------------------
// 1. Get the current date
// 2. Subtract 5 days
// 3. Format it
// 4. Output it
// ---------------------------------------------------------------------
document.body.innerHTML = DateHelper.format(DateHelper.addDays(new Date(), -5));

(siehe auch diese Fiedel )

0voto

Juan Caicedo Punkte 1265

Eine einfache Möglichkeit, Termine zu verwalten, ist die Verwendung von Moment.js

Sie können verwenden add . Beispiel

var startdate = "20.03.2014";
var new_date = moment(startdate, "DD.MM.YYYY");
new_date.add(5, 'days'); //Add 5 days to start date
alert(new_date);

Dokumente http://momentjs.com/docs/#/manipulating/add/

0voto

Ismail Punkte 97

Um relative Zeitstempel mit einer genaueren Differenz als ganzen Tagen zu berechnen, können Sie Date.getTime() und Date.setTime() verwenden, um mit ganzen Zahlen zu arbeiten, die die Anzahl der Millisekunden seit einer bestimmten Epoche - nämlich dem 1. Januar 1970 - darstellen. Wenn Sie zum Beispiel wissen wollen, wann es 17 Stunden nach jetzt ist:

const msSinceEpoch = (new Date()).getTime();
const fortyEightHoursLater = new Date(msSinceEpoch + 48 * 60 * 60 * 1000).toLocaleString();
const fortyEightHoursEarlier = new Date(msSinceEpoch - 48 * 60 * 60 * 1000).toLocaleString();
const fiveDaysAgo = new Date(msSinceEpoch - 120 * 60 * 60 * 1000).toLocaleString();

console.log({msSinceEpoch, fortyEightHoursLater, fortyEightHoursEarlier, fiveDaysAgo})

Referenz

0voto

Gabriel Arghire Punkte 1067
function daysSinceGivenDate (date) {
  const dateInSeconds = Math.floor((new Date().valueOf() - date.valueOf()) / 1000);
  const oneDayInSeconds = 86400;

  return Math.floor(dateInSeconds / oneDayInSeconds); // casted to int
};

console.log(daysSinceGivenDate(new Date())); // 0
console.log(daysSinceGivenDate(new Date("January 1, 2022 03:24:00"))); // relative...

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