Vanilla JavaScript: Tage vom Datum addieren oder subtrahieren (und mehr)

PHPz
Freigeben: 2023-08-26 16:53:08
Original
948 Leute haben es durchsucht

Vanilla JavaScript:从日期中添加或减去天数(以及更多)

In einem aktuellen Tutorial haben wir gelernt, wie man die Werte für Monat, Tag, Jahr und Zeit eines beliebigen Date-Objekts erhält und festlegt. Die Möglichkeit, diese Datumswerte abzurufen und festzulegen, ist in vielen Situationen nützlich. Sie können beispielsweise das Datum eines besonderen Ereignisses in einer Variablen speichern. Sie können diese Methoden auch verwenden, um das aktuelle Datum und die aktuelle Uhrzeit anzuzeigen oder einen Zeitraum zu addieren oder davon zu subtrahieren.

In diesem Tutorial konzentrieren wir uns darauf, zu lernen, wie man einen Zeitraum wie Jahr, Monat, Tag, Stunden und Minuten zu einem bestimmten Datum addiert oder subtrahiert.

So addieren Sie Jahr, Monat und Tag zum Datum

Vielleicht erinnern Sie sich aus unseren anderen Tutorials daran, dass JavaScript über setFullYear()getFullYear() 等方法,您可以使用它们来设置和获取特定日期的当前全年。您可以使用 setMonth()getMonth() 等方法来设置和获取特定日期的当前月份。同样,您可以使用 setDate()getDate() Methoden verfügt, um den Tag des Monats festzulegen und abzurufen.

Lassen Sie uns eine Funktion schreiben, die einem Datum ein Jahr hinzufügt. Es akzeptiert das Datum und das Jahr, die Sie hinzufügen möchten, als Parameter und gibt das neue Datum zurück.

function addYearsToDate(date, years) {
   let new_date = new Date(date);
   new_date.setFullYear(new_date.getFullYear() + years);

   return new_date;
}

let today = new Date();
let five_years_later = addYearsToDate(today, 5);

// Outputs: Date Wed Jun 07 2023 19:04:56 GMT+0530 (India Standard Time)
console.log(today);

// Outputs: Date Wed Jun 07 2028 19:04:56 GMT+0530 (India Standard Time)
console.log(five_years_later);
Nach dem Login kopieren

Hier ist zu beachten, dass mit dem Konstruktor Date() ein neues Date() 构造函数创建一个新的 Date 对象,该对象被分配给变量 new_date。只需将 new_date 的值设置为给定的 date 就会导致它们都指向同一个 Date Objekt erstellt wird, das der Variablen new_date zugewiesen wird. Wenn Sie einfach den Wert von new_date auf das angegebene date setzen, verweisen beide auf dasselbe

-Objekt.

addMonthsToDate()Wir werden dieselbe Logik verwenden, um die Funktion

zu erstellen, die ein Datum und die Anzahl der hinzuzufügenden Monate als Parameter akzeptiert und das neue Datum zurückgibt.

 function addMonthsToDate(date, months) {
   let new_date = new Date(date);
   new_date.setMonth(new_date.getMonth() + months);

   return new_date;
}

let today = new Date();
let five_months_later = addMonthsToDate(today, 5);
let fifty_months_later = addMonthsToDate(today, 50);

// Outputs: Date Wed Jun 07 2023 19:15:04 GMT+0530 (India Standard Time)
console.log(today);

// Outputs: Date Tue Nov 07 2023 19:15:04 GMT+0530 (India Standard Time)
console.log(five_months_later);

// Outputs: Date Sat Aug 07 2027 19:15:04 GMT+0530 (India Standard Time)
console.log(fifty_months_later); 
Nach dem Login kopieren
setMonth()Wie ich in anderen Tutorials erwähnt habe, führt jeder Überlauf, der bei der

-Methode auftritt, dazu, dass dem angegebenen Datum die entsprechende Anzahl von Jahren hinzugefügt wird. Das passiert, wenn wir dem Datum 50 Monate hinzufügen. Es hat unser Dating-Datum um 4 Jahre und 2 Monate verlängert.

Jetzt schreiben wir eine Funktion, die die angegebene Anzahl von Tagen zu unserem angegebenen Datum hinzufügt und ein neues Datum zurückgibt:

function addDaysToDate(date, days) {
   let new_date = new Date(date);
   new_date.setDate(new_date.getDate() + days);

   return new_date;
}

let today = new Date();
let five_days_later = addDaysToDate(today, 5);
let thousand_days_later = addDaysToDate(today, 1000);

// Outputs: Date Wed Jun 07 2023 19:29:12 GMT+0530 (India Standard Time)
console.log(today);

// Outputs: Date Wed Jun 07 2023 19:29:12 GMT+0530 (India Standard Time)
console.log(five_days_later);

// Outputs: Date Wed Jun 07 2023 19:29:12 GMT+0530 (India Standard Time)
console.log(thousand_days_later);
Nach dem Login kopieren

Fügen Sie einen beliebigen Zeitraum zu unseren Terminen hinzu

Wir haben drei neue Funktionen definiert, die es uns ermöglichen, in JavaScript ein Jahr, einen Monat oder einen Tag zu einem bestimmten Datum hinzuzufügen. Möglicherweise möchten Sie dem Datum einen anderen Zeitraum oder eine andere Dauer hinzufügen, beispielsweise Stunden, Minuten oder Sekunden. Es macht keinen Sinn, drei weitere Funktionen für sie zu schreiben.

Mit den folgenden Funktionen kann ein beliebiger Zeitraum zu einem bestimmten Datum hinzugefügt werden:

function addPeriodToDate(date, {years = 0, months = 0, days = 0, hours = 0, minutes = 0, seconds = 0}) {
   let new_date = new Date(date);
   
   new_date.setFullYear(new_date.getFullYear() + years);
   new_date.setMonth(new_date.getMonth() + months);
   new_date.setDate(new_date.getDate() + days);
   new_date.setHours(new_date.getHours() + hours);
   new_date.setMinutes(new_date.getMinutes() + minutes);
   new_date.setSeconds(new_date.getSeconds() + seconds);

   return new_date;
}


let today = new Date();
// Outputs: Date Wed Jun 07 2023 20:18:24 GMT+0530 (India Standard Time)
console.log(today);

let period = {years: 1, months: 2, days: 3};
let new_date = addPeriodToDate(today, period);
// Outputs: Date Sat Aug 10 2024 20:18:24 GMT+0530 (India Standard Time)
console.log(new_date);

period = {years: 4, months: 22};
new_date = addPeriodToDate(today, period);
// Outputs: Date Sat Apr 07 2029 20:18:24 GMT+0530 (India Standard Time)
console.log(new_date);

period = {days: 4, seconds: 22};
new_date = addPeriodToDate(today, period);
// Outputs: Date Sun Jun 11 2023 20:18:46 GMT+0530 (India Standard Time)
console.log(new_date);
Nach dem Login kopieren

Wie Sie sehen können, erledigt die obige Funktion alle Überlaufprobleme für Sie. Es ist auch nicht erforderlich, für alle Zeiteinheiten Werte anzugeben, da diese standardmäßig auf 0 gesetzt sind. Das bedeutet, dass wir einfach die Anzahl der Tage und Sekunden, die wir hinzufügen möchten, übergeben und alle anderen Werte überspringen können.

Subtrahieren Sie einen beliebigen Zeitraum von unserem Datum

Wir müssen keine separate Funktion schreiben, um einen beliebigen Zeitraum von einem Datum zu subtrahieren. Mit den Funktionen im vorherigen Abschnitt können Sie Jahre, Monate, Tage, Stunden, Minuten oder Sekunden subtrahieren. Sie müssen lediglich einen negativen Wert für diesen Zeitraum angeben. Hier einige Beispiele:

period = {years: -1, months: -2, days: -3};
new_date = addPeriodToDate(today, period);

// Outputs: Date Mon Apr 04 2022 20:18:24 GMT+0530 (India Standard Time)
console.log(new_date);

period = {years: -4, months: -22};
new_date = addPeriodToDate(today, period);

// Outputs: Date Mon Aug 07 2017 20:18:24 GMT+0530 (India Standard Time)
console.log(new_date);

period = {days: -4, seconds: -22};
new_date = addPeriodToDate(today, period);

// Outputs: Date Sat Jun 03 2023 20:18:02 GMT+0530 (India Standard Time)
console.log(new_date); 
Nach dem Login kopieren
Abschließende Gedanken

addYearsToDate() 这样的函数,专门简单地执行此操作。另一种方法是创建一个更通用的 addPeriodToDate()In diesem Tutorial haben wir zwei verschiedene Möglichkeiten kennengelernt, das Problem des Addierens und Subtrahierens von Jahren, Monaten, Tagen usw. zu Datumsangaben in JavaScript zu lösen. Wenn Sie nur Jahre addieren oder subtrahieren möchten, können Sie eine Funktion wie

erstellen, die verschiedene Zeiteinheiten verarbeiten kann. 🎜

Das obige ist der detaillierte Inhalt vonVanilla JavaScript: Tage vom Datum addieren oder subtrahieren (und mehr). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage