JS获取当前月天数

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012760435/article/details/74455471

先上代码

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月份的第一天

猜你喜欢

转载自blog.csdn.net/u012760435/article/details/74455471