1. 程式人生 > >JS獲取當前月天數

JS獲取當前月天數

先上程式碼

function DaysInMonth() {
    var d = new Date();
    var days = new Date(d.getFullYear(), d.getMonth() + 1, 0);
    return days.getDate();
}

js的getMonth從0開始;
getDate()方法表示獲取當前日(1-31);
重點是new Date()的構造,很奇妙的一個東西:
new Date(yyyy,m,0),當傳入0時顯然是不在有效值區間內的,此時js會把當前天數向前推表示為上一個月的最後一天,舉栗子:我想獲得2017年7月份的天數,如果這樣寫

new Date(2017,6,0)

那就錯了,重點來了,敲黑板:月份從0開始所以6表示7月,末位0會將日期向前取上一個月的最後一天,即6月份的最後一天,輸出30。也就是說,這樣寫實際獲得的是6月份的天數。正確寫法應為

new Date(2017,6+1,0)

為了便於理解我寫成6+1的形式,對照上面程式碼中的getMonth()+1,仔細體會一下其中的妙處。
如果末位是1-31之間任意一個數字,那就正常顯示,你設定第幾天就會輸出第幾天,不再多說。
如果超過31,同理,js會自動將日期向後退,比如設定32(7月),輸出getDate會得到1,這表示8月份的第一天