Hinzufügen von Tagen zum aktuellen Date
JavaScript verwenden? Verfügt JavaScript über eine eingebaute Funktion wie die von .NET AddDay()
?
Die Methode .addDays() funktioniert nicht für Daten, die die Sommerzeitgrenzen überschreiten.
Hinzufügen von Tagen zum aktuellen Date
JavaScript verwenden? Verfügt JavaScript über eine eingebaute Funktion wie die von .NET AddDay()
?
Die einfachste Antwort ist, vorausgesetzt, es muss 1 Tag zum aktuellen Datum hinzugefügt werden:
var currentDate = new Date();
var numberOfDayToAdd = 1;
currentDate.setDate(currentDate.getDate() + numberOfDayToAdd );
Ich werde Ihnen Zeile für Zeile erklären, was dieser Code bewirkt:
Ich habe diese Erweiterungen gestern Abend erstellt:
können Sie entweder positive oder negative Werte übergeben;
Beispiel:
var someDate = new Date();
var expirationDate = someDate.addDays(10);
var previous = someDate.addDays(-5);
Date.prototype.addDays = function (num) {
var value = this.valueOf();
value += 86400000 * num;
return new Date(value);
}
Date.prototype.addSeconds = function (num) {
var value = this.valueOf();
value += 1000 * num;
return new Date(value);
}
Date.prototype.addMinutes = function (num) {
var value = this.valueOf();
value += 60000 * num;
return new Date(value);
}
Date.prototype.addHours = function (num) {
var value = this.valueOf();
value += 3600000 * num;
return new Date(value);
}
Date.prototype.addMonths = function (num) {
var value = new Date(this.valueOf());
var mo = this.getMonth();
var yr = this.getYear();
mo = (mo + num) % 12;
if (0 > mo) {
yr += (this.getMonth() + num - mo - 12) / 12;
mo += 12;
}
else
yr += ((this.getMonth() + num - mo) / 12);
value.setMonth(mo);
value.setYear(yr);
return value;
}
Die Methode .addDays() funktioniert nicht für Daten, die die Sommerzeitgrenzen überschreiten.
Dies ist eine der besseren Antworten hier, denn Sie verwenden (korrekterweise) die Anzahl der Millis seit dem Epoc, um Daten/Zeiten darzustellen, und fügen Beträge von Millis für Anpassungen hinzu... Warum haben Sie dies dann nicht für "addMonths" beibehalten? Und warum kein Jahr hinzufügen? Wurde Ihnen langweilig?
Andere Zeiträume als Monate können durch statische Zahlen dargestellt werden. Aber Monate können vier verschiedene Längen haben. Außerdem kann jede Zeitspanne ab der Länge "Tage" bei der Sommerzeit eine variable Länge haben, so dass man die zeitbasierte Addition nicht mehr ohne eine weitere Komplexitätsstufe verwenden kann. Ich habe die Funktion addYears() hinzugefügt und addMonths() korrigiert.
Eine Lösung, die für die Pipeline-Betreiber :
const addDays = days => date => {
const result = new Date(date);
result.setDate(result.getDate() + days);
return result;
};
Verwendung:
// Without the pipeline operator...
addDays(7)(new Date());
// And with the pipeline operator...
new Date() |> addDays(7);
Wenn Sie mehr Funktionalität benötigen, schlage ich vor, dass Sie sich die datum-fns Bibliothek.
Kurz:
function addDays(date, number) {
const newDate = new Date(date);
return new Date(newDate.setDate(newDate.getDate() + number));
}
console.log({
tomorrow: addDays(new Date(), 1)
});
Vorschuss:
function addDays(date, number) {
const newDate = new Date(date);
return new Date(newDate.setDate(date.getDate() + number));
}
function addMonths(date, number) {
const newDate = new Date(date);
return new Date(newDate.setMonth(newDate.getMonth() + number));
}
function addYears(date, number) {
const newDate = new Date(date);
return new Date(newDate.setFullYear(newDate.getFullYear() + number));
}
function getNewDate(dateTime) {
let date = new Date();
let number = parseInt(dateTime.match(/\d+/)[0]);
if (dateTime.indexOf('-') != -1)
number = (- number);
if (dateTime.indexOf('day') != -1)
date = addDays(date, number);
else if (dateTime.indexOf('month') != -1)
date = addMonths(date, number);
else if (dateTime.indexOf('year') != -1)
date = addYears(date, number);
return date;
}
console.log({
tomorrow: getNewDate('+1day'),
yesterday: getNewDate('-1day'),
nextMonth: getNewDate('+1month'),
nextYear: getNewDate('+1year'),
});
Mit dem Fix von jperl
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.