HOWTO · JavaScript
使用 JavaScript 獲取當月的第一天和最後一天
本教學展示如何使用 JavaScript 中的方法獲取當月的第一天和最後一天。
本頁內容
本 JavaScript 教學講解如何獲取一個月的第一天和最後一天。許多專案都需要找出當月的第一天和最後一天的日期——例如報表、計費週期和日期選擇器。
有兩個 Date 方法是基礎:getFullYear() 告訴我們年份,getMonth() 告訴我們月份。有了這兩個值,Date 建構函數就可以直接建構出邊界日期。
在 JavaScript 中使用 Date.getFullYear() 方法
Date.getFullYear() 方法根據本地時間返回指定日期的年份。注意,範例使用 Date(year, monthIndex, day) 建構函數來建構日期;月份索引從 0 開始,所以 0 表示一月。
const randomDate = new Date(2018, 0, 20);
console.log(randomDate.getFullYear());
輸出:
2018
在 JavaScript 中使用 Date.getMonth() 方法
getMonth() 方法以從 0 開始的值返回指定日期的月份:0 表示一年中的第一個月(一月),11 表示最後一個月(十二月)。
const randomDate = new Date(2018, 0, 20);
console.log(randomDate.getMonth());
輸出:
0
我們必須記住,JavaScript 中日期的月份編號是從 0 開始的。所以一月是月份 0,十二月是月份 11。
使用 JavaScript 獲取一個月的第一天和最後一天
兩次建構函數呼叫就能得到邊界日期:
- 第一天是
new Date(year, month, 1)——同一個月的第1天。 - 最後一天是
new Date(year, month + 1, 0)——下一個月的第0天。第0天會從下個月的第一天回退一天,恰好落在我們想要的月份的最後一天,無論該月有多少天。
下面的函數把兩者打包在一起,範例將其應用於 2018 年 1 月:
function getMonthRange(date) {
const firstDay = new Date(date.getFullYear(), date.getMonth(), 1);
const lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0);
return { firstDay, lastDay };
}
const january2018 = getMonthRange(new Date(2018, 0, 20));
console.log(january2018.firstDay.toDateString());
console.log(january2018.lastDay.toDateString());
輸出:
Mon Jan 01 2018
Wed Jan 31 2018
要獲取當前月份的第一天和最後一天,傳入當前日期即可:getMonthRange(new Date())。同一個函數適用於任何月份——你永遠不需要查一個月有多少天,因為第 0 天的回退會同樣處理 28、29、30 和 31 天的月份。閏年 2024 年的 2 月展示了這一點:
const february2024 = getMonthRange(new Date(2024, 1, 15));
console.log(february2024.firstDay.toDateString());
console.log(february2024.lastDay.toDateString());
輸出:
Thu Feb 01 2024
Thu Feb 29 2024
結論
一個月的第一天是 new Date(year, month, 1),最後一天是 new Date(year, month + 1, 0)——即下個月第一天的前一天。把從 getFullYear() 和 getMonth() 得到的年份和從 0 開始的月份傳入這兩次建構函數呼叫,就能得到當前月份或任何特定月份的第一天和最後一天,包括閏年。