# 已知年月,求该月共多少天
// month 值需对应实际的月份,如实际 2 月,month 为 2,实际 3 月,month 为 3
function getMonthCountDay1 (year, month) {
return 32 - new Date(year, month - 1, 32).getDate()
}
// month 值需对应实际的月份,如实际 2 月,month 为 2
function getMonthCountDay2 (year, month) {
return new Date(year, month, 0).getDate()
}
示例:
getMonthCountDay1(2019, 2) // 28
getMonthCountDay2(2019, 2) // 28
getMonthCountDay1(2020, 2) // 29
getMonthCountDay2(2020, 2) // 29
测试:
getMonthCountDay2(,
)
解析:
利用了 Date API 处理日期溢出时,会自动往后推延响应时间的规则:
new Date(2019, 0, 50)
其中0代表1月,1月只有31天,则多出来的19天会被加到2月,结果是2019年2月19日。new Date(2019, 20, 10)
,1年只有12个月,多出来的9个月会被加到2020年,结果是2020年9月10日new Date(2019, -2, 10)
,2019年1月10日往前推2个月,结果为2018年11月10日new Date(2019, 2, -2)
,2019年3月1日往前推2天,结果为2019年2月26日- 以上可以混用