在很~~久之前的JS30專案之2,clock曾經有用過Date物件(話說JS30我真的要找個時間把它完成阿…一直擱在那邊心理挺過意不去的),當時只用到了取目前的年份、月份與日期這些基本功能,今天在這邊再做一次比較完整的整理!
什麼是Date物件?
Date物件在JS中是個特別的存在,只能透過Date建構子來創建該物件的實例。
其中Date物件是基於現實標準時間,自1970/1/1日開始的毫秒數值來取時間。
建立Date物件
建立一個Date物件有許多方法,以下列出較為常見的做法
new Date(); //沒傳入任何參數,以當下的時間創立物件
new Date(1991,4,14);//放入value 此例為創建1991-05-14的時間物件
new Date('1991-04-14'); //放入表示時間日期的字串, 此例為1991-04-14的時間物件
特別注意的是用value創建Date物件時,要先了解其中的規則,裡面可以接收的參數有
| year | 表示年份的整數,當數值落在0~99之間,表示1900~1999的年份 |
| month | 表示月份的整數,數值為0~11 所以上方1991,4,14才會是5/14 |
| day | 表示日期的整數,數值為1~31 0為特殊用法,文章的最後會解釋 |
| hour | 表示小時的整數 |
| minute | 表示分鐘的整數 |
| second | 表示秒的整數 |
| millisecond | 表示毫秒的整數 |
當你傳入兩個參數以上時,缺少的參數除了日期會被設為1之外,其餘參數都會為0,例如
const date =new Date(1991,4) console.log(date) // 1991-05-01T00:00:00.000Z
Date物件常用方法
| getFullYear() | 取得年份(以四位數表示) |
| getMonth() | 取得月份(0~11) |
| getDate() | 取得日期(1~31) |
| getDay() | 取得星期幾(0~6) |
| getHours() | 取得小時(0~23) |
| getMinutes() | 取得分鐘(0~59) |
了解Date物件的基本用法後,我們終於要進入今天的主題了-如何取得一個月的最後一天?
你總不能一月大、二月小、三月大這樣一路念給電腦聽吧?好在其實有個非常簡單的解決方式
// 取得2019 1月的第一天 const date_start = new Date(2019,0,1).getDate() // 取得2019 1月的最後一天 const date_end = new Date(2019,1,0).getDate() console.log(date_start) //1 console.log(date_end) //31
為什麼會這麼神奇呢?原因是當日期的參數輸入0時,它會自動去找前一個月的最後一天!
這個用法在處理日期相關的文件時相當實用! 挺有趣的吧!
參考文章