先说正确写法,就用一行代码:
new Date(yyyy, month + 1, 0).getDate()
如:
某正确代码截图.png
天下代码一通乱抄抄抄!
误人子弟啊!
先来个预览吧! (打×的代表里面涉及到了错误代码段,并且没有指出其错误点)
百度截图.png具体的错误代码:
错误代码.png测试一下就知道错哪里了。
比如今天2019.5.31号,得到的却是30天:
var curDate = new Date(2019,4,31); // 2019.05.31
var curMonth = curDate.getMonth(); // 5月
curDate.setMonth(curMonth + 1); // 2019.6.31 ? 不存在,变成了2019.7.1
curDate.setDate(0); // 2019.7.0 -> 2019.6.30
curDate.getDate(); // 30天。
这里还有一段测试代码,date2是有问题的:
var date1 = new Date(2019,0,31)
date1.setMonth(2) // 设为3月份
date1.setDate(0)
var date2 = new Date(2019,0,31)
date2.setMonth(1) // 设为2月份,但其实去2019.3.3了
date2.setDate(0)
console.log(date1,date2) // 结果都是2019.2.28!
当然,这段代码也不是无可救药,改八改八也能用。
就是在setMonth之前先setDate(1) 设为第一天(或其他1-28都行)。
即:
var curDate = new Date(2019,4,31); // 2019.05.31
var curMonth = curDate.getMonth(); // 5月
curDate.setDate(1); // 加这句,加这句,加这句,也ok
curDate.setMonth(curMonth + 1); // 2019.6.1
curDate.setDate(0); // 2019.6.0 -> 2019.5.30
curDate.getDate(); // 31天。
——end——
mark一下,前两天运气好,有个同事在5.31号测到了排班排到下个月去了。虽然问题不麻烦,很快就定位到并解决了,但是,度娘给我的结果,真让我像吃了苍蝇一样难受。【呕】【呕】【呕】
网友评论