Heim >Web-Frontend >js-Tutorial >Wie füge ich einem JavaScript-Datumsobjekt 30 Minuten hinzu?
Um 30 Minuten zu einem JavaScript-Datumsobjekt hinzuzufügen, können Sie Folgendes tun Führen Sie die folgenden Schritte aus:
Verwenden einer Bibliothek
Wenn Sie viele Dates haben funktioniert, sollten Sie sich vielleicht JavaScript-Datumsbibliotheken wie Luxon, Day.js oder Moment.js ansehen. Bei Moment.js lautet dies beispielsweise einfach:
var newDateObj = moment(oldDateObj).add(30, 'm').toDate();
Vanilla JavaScript
Das ist wie die Antwort von Chaos, aber in einer Zeile:
var newDateObj = new Date(oldDateObj.getTime() diff*60000);
Wobei diff die gewünschte Differenz in Minuten von der Zeit von oldDateObj ist. Es kann sogar negativ sein.
Oder als wiederverwendbare Funktion, wenn Sie dies an mehreren Stellen tun müssen:
Funktion addMinutes(date,minutes) {
return new Date(date.getTime() + minutes*60000);
}
Und nur für den Fall, dass dies nicht offensichtlich ist: Der Grund, warum wir Minuten mit 60000 multiplizieren, besteht darin, Minuten in umzuwandeln Millisekunden.
Seien Sie vorsichtig mit Vanilla-JavaScript. Termine sind schwierig!
Du denkst vielleicht, dass man zu einem Termin 24 Stunden hinzufügen kann, um den Termin von morgen zu bekommen, oder? Falsch!
Es stellt sich heraus, dass ein Tag nicht unbedingt 24 Stunden lang ist, wenn der Benutzer die Sommerzeit beachtet. Es gibt einen Tag im Jahr, der nur 23 Stunden lang ist, und einen Tag im Jahr, der 25 Stunden lang ist. Beispielsweise ist in den meisten Vereinigten Staaten und Kanada der 2. November 2014 24 Stunden nach Mitternacht immer noch der 2. November:
const NOV = 10; //weil JS-Monate um eins verschoben sind...
addMinutes(new Date(2014, NOV, 2), 60*24); //In den USA wird am 2. November um 23 Uhr gedruckt, nicht am 3. November um 12 Uhr!
Aus diesem Grund ist die Verwendung einer der oben genannten Bibliotheken sicherer, wenn Sie viel damit arbeiten müssen.
Unten finden Sie eine allgemeinere Version dieser Funktion, die ich geschrieben habe. Ich würde immer noch empfehlen, eine Bibliothek zu verwenden, aber das könnte für Ihr Projekt übertrieben/unmöglich sein. Die Syntax ist der MySQL-Funktion DATE_ADD nachempfunden.
/**
Funktion dateAdd(date, Interval, Units) {
if(!( Datumsinstanz von Datum))
return undefined;
var ret = new Date(date); //ursprüngliches Datum nicht ändern
var checkRollover = function() { if(ret.getDate() != date.getDate()) ret.setDate(0);};
switch(String(interval ).toLowerCase()) {
case 'year' : ret.setFullYear(ret.getFullYear() + units); checkRollover(); break; case 'quarter': ret.setMonth(ret.getMonth() + 3*units); checkRollover(); break; case 'month' : ret.setMonth(ret.getMonth() + units); checkRollover(); break; case 'week' : ret.setDate(ret.getDate() + 7*units); break; case 'day' : ret.setDate(ret.getDate() + units); break; case 'hour' : ret.setTime(ret.getTime() + units*3600000); break; case 'minute' : ret.setTime(ret.getTime() + units*60000); break; case 'second' : ret.setTime(ret.getTime() + units*1000); break; default : ret = undefined; break;
}
return ret;
}
Working jsFiddle Demo.
Das obige ist der detaillierte Inhalt vonWie füge ich einem JavaScript-Datumsobjekt 30 Minuten hinzu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!