Javascript 获取某月的开始天和结束天
在javascript用于日期计算时,常常要获取某月的开始天和结束天,某月的开始天较易获得,因为开始天总是1,但是获取结束天就有点困难了,不仅有大月和小月之分,还要考虑闰年的情况。
这里有个讨巧的地方,使用new Date(year,month,day)初始化一个日期时,如果day为0,则表示为上月的最后一天,因此利用该特点可以轻松地获取某月的最大天数(最后一天)。
注意:第2个参数传入时,月是以0开始的,而非1开始,例如求5月的第1天,则月应传入5-1=4,求最后一天时,传入5,表示6月,天传0,表示6月的上一月最后一天(有点绕),看下面的例子。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>日期测试</title>
</head>
<body>
<script lang="javascript">
function println(str){
document.writeln(str + '<br>');
}
function getFirstDayOfMonth(year, month){
return new Date(year, month-1, 1);
}
function getLastDayOfMonth(year, month){
return new Date(year, month, 0);
}
function test1(){
println('2018年5月:' + getFirstDayOfMonth(2018,5) + ',' + getLastDayOfMonth(2018, 5));
println('2018年2月:' + getFirstDayOfMonth(2018,2) + ',' + getLastDayOfMonth(2018, 2));
println('2016年2月:' + getFirstDayOfMonth(2016,2) + ',' + getLastDayOfMonth(2016, 2));
println('2018年4月:' + getFirstDayOfMonth(2018,4) + ',' + getLastDayOfMonth(2018, 4));
}
test1();
</script>
</body>
</html>
输出:
2018年5月:Tue May 1 00:00:00 UTC+0800 2018,Thu May 31 00:00:00 UTC+0800 2018
2018年2月:Thu Feb 1 00:00:00 UTC+0800 2018,Wed Feb 28 00:00:00 UTC+0800 2018
2016年2月:Mon Feb 1 00:00:00 UTC+0800 2016,Mon Feb 29 00:00:00 UTC+0800 2016
2018年4月:Sun Apr 1 00:00:00 UTC+0800 2018,Mon Apr 30 00:00:00 UTC+0800 2018