JAVASCRIPT初學筆記40重新認識Date物件,取得每個月有幾天吧!

在很~~久之前的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時,它會自動去找前一個月的最後一天!
這個用法在處理日期相關的文件時相當實用! 挺有趣的吧!

參考文章

MDN-Date

發表留言