搜尋
首頁CMS教程&#&按Vanilla JavaScript:從日期中添加或減去天數(以及更多)

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

在最近的教學中,我們學習如何取得和設定任何 Date 物件的月、日、年和時間的值。獲取和設定這些日期值的能力在許多情況下都會派上用場。例如,您可以將特殊事件的日期儲存在變數中。您也可以使用這些方法來顯示目前日期和時間或對一段時間進行加減操作。

在本教程中,我們的重點將是學習如何從指定日期添加或減去一段時間,例如年、月、日、小時和分鐘。

如何為日期新增年、月和日

您可能還記得我們的其他教學課程中,JavaScript 具有setFullYear()getFullYear() 等方法,您可以使用它們來設定和取得特定日期的目前全年。您可以使用 setMonth()getMonth() 等方法來設定和取得特定日期的當前月份。同樣,您可以使用 setDate()getDate() 方法來設定和取得月份中的日期。

讓我們寫一個函數,為日期新增年份。它將接受您想要新增的日期和年數作為其參數並傳回新日期。

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);

這裡需要注意的重要一點是使用 Date() 建構函式建立一個新的 Date 對象,該物件被指派給變數 new_date。只需將 new_date 的值設為給定的 date 就會導致它們都指向同一個 Date 物件。

我們將使用相同的邏輯建立 addMonthsToDate() 函數,該函數接受日期和要新增的月數作為參數並傳回新日期。

 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); 

正如我在其他教程中提到的,setMonth() 方法遇到的任何溢出都會導致給定日期添加適當的年數。這就是我們將日期加上 50 個月後所發生的情況。它使我們的約會日期增加了 4 年 2 個月。

現在,讓我們寫一個函數,將給定的天數加到我們指定的日期並傳回一個新日期:

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);

在我們的日期中添加任何時間段

我們定義了三個新函數,讓我們在 JavaScript 中為給定日期新增年、月或日。您可能想要在日期中添加一些其他時間段或持續時間,例如小時、分鐘或秒。為它們再寫三個函數是沒有意義的。

以下函數可用來將任意時間段新增至指定日期:

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);

如您所見,上述函數會為您處理任何溢出問題。也無需為所有時間單位提供值,因為預設情況下它們設定為 0。這意味著我們可以簡單地傳遞我們想要添加的天數和秒數,同時跳過所有其他值。

從我們的日期中減去任何時間段

我們不需要寫任何單獨的函數來從日期中減去任意時間段。您可以使用上一節的函數來減去年、月、日、小時、分鐘或秒。您需要做的就是提供該期間的負值。以下是一些範例:

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); 

最終想法

在本教學中,我們學習了兩種不同的方法來解決 JavaScript 中日期加減年、月、日等問題。如果您只想添加或減去年份,您可以考慮創建一個像 addYearsToDate() 這樣的函數,專門簡單地執行此操作。另一種方法是建立一個更通用的 addPeriodToDate() 函數,它可以處理不同的時間單位。

以上是Vanilla JavaScript:從日期中添加或減去天數(以及更多)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
wordpress怎麼加評論框wordpress怎麼加評論框Apr 20, 2025 pm 12:15 PM

在 WordPress 網站上啟用評論功能,可以為訪客提供參與討論和分享反饋的平台。為此,請按照以下步驟操作:啟用評論:在儀錶盤中,導航至“設置”>“討論”,並選中“允許評論”複選框。創建評論表單:在編輯器中,單擊“添加塊”並蒐索“評論”塊,將其添加到內容中。自定義評論表單:通過設置標題、標籤、佔位符和按鈕文本來定制評論塊。保存更改:單擊“更新”以保存評論框並將其添加到頁面或文章中。

wordpress怎麼複製子站wordpress怎麼複製子站Apr 20, 2025 pm 12:12 PM

如何復制 WordPress 子站?步驟:在主站創建子站。在主站克隆子站。將克隆導入目標位置。更新域名(可選)。分開插件和主題。

wordpress怎麼寫頁頭wordpress怎麼寫頁頭Apr 20, 2025 pm 12:09 PM

在WordPress中創建自定義頁頭的步驟如下:編輯主題文件“header.php”。添加您的網站名稱和描述。創建導航菜單。添加搜索欄。保存更改並查看您的自定義頁頭。

wordpress評論怎麼顯示wordpress評論怎麼顯示Apr 20, 2025 pm 12:06 PM

WordPress 網站中啟用評論功能:1. 登錄管理面板,轉到 "設置"-"討論",勾選 "允許評論";2. 選擇顯示評論的位置;3. 自定義評論表單;4. 管理評論,批准、拒絕或刪除;5. 使用 <?php comments_template(); ?> 標籤顯示評論;6. 啟用嵌套評論;7. 調整評論外形;8. 使用插件和驗證碼防止垃圾評論;9. 鼓勵用戶使用 Gravatar 頭像;10. 創建評論指

wordpress怎麼上傳源碼wordpress怎麼上傳源碼Apr 20, 2025 pm 12:03 PM

可以通過 WordPress 安裝 FTP 插件,配置 FTP 連接,然後使用文件管理器上傳源碼。步驟包括:安裝 FTP 插件、配置連接、瀏覽上傳位置、上傳文件、檢查上傳成功。

wordpress代碼怎麼複製wordpress代碼怎麼複製Apr 20, 2025 pm 12:00 PM

如何復制 WordPress 代碼?從管理界面複製:登錄 WordPress 網站,導航到目標位置,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。從文件複製:使用 SSH 或 FTP 連接到服務器,導航到主題或插件文件,選擇代碼並按 Ctrl C (Windows)/Command C (Mac) 複製代碼。

wordpress出現錯誤怎麼辦wordpress出現錯誤怎麼辦Apr 20, 2025 am 11:57 AM

WordPress 錯誤解決指南:500 內部服務器錯誤:禁用插件或檢查服務器錯誤日誌。 404 未找到頁面:檢查 permalink 並確保頁面鏈接正確。白屏死機:增加服務器 PHP 內存限制。數據庫連接錯誤:檢查數據庫服務器狀態和 WordPress 配置。其他技巧:啟用調試模式、檢查錯誤日誌和尋求支持。預防錯誤:定期更新 WordPress、僅安裝必要插件、定期備份網站和優化網站性能。

wordpress怎麼關閉評論wordpress怎麼關閉評論Apr 20, 2025 am 11:54 AM

如何在 WordPress 中關閉評論?特定文章或頁面:在編輯器中取消選中“討論”下的“允許評論”。整個網站:在“設置”->“討論”中取消選中“允許發表評論”。使用插件:安裝 Disable Comments 等插件禁用評論。編輯主題文件:通過編輯 comments.php 文件移除評論表單。自定義代碼:使用 add_filter() 函數禁用評論。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器