JavaScript 获取月份天数与周数的实现技巧
本文介绍利用JavaScript Date对象的特性,通过构造特定日期字符串(如传入0号)来自动获取月份最大天数及处理闰年逻辑。同时提供计算某年某月天数及判断某日属于第几周的具体函数实现,帮助开发者简化日期处理逻辑。
JavaScript 获取月份天数与周数的实现技巧
本文介绍利用JavaScript Date对象的特性,通过构造特定日期字符串(如传入0号)来自动获取月份最大天数及处理闰年逻辑。同时提供计算某年某月天数及判断某日属于第几周的具体函数实现,帮助开发者简化日期处理逻辑。
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>标题页</title>
<script language="javascript">
function getLastDay(year,month)
{
var new_year = year; //取当前的年份
var new_month = month++;//取下一个月的第一天,方便计算(最后一天不固定)
if(month>12) //如果当前大于12月,则年份转到下一年
{
new_month -=12; //月份减
new_year++; //年份增
}
var newnew_date = new Date(new_year,new_month,1);//取当年当月中的第一天
return (new Date(new_date.getTime()-1000*60*60*24)).getDate();//获取当月最后一天日期
}
</script>
<body>
<input id="Button1" type="button" value="取2007年5月的最后一天" onClick="alert(getLastDay(2007,5))" />
</body>
</html>
利用 Date 对象特性获取月份最大天数
js得到一个月最大天数 JS里 面的new Date("xxxx/xx/xx")这个日期的构造方法有一个妙处, 当你传入的是"xxxx/xx/0"(0号)的话,得到的日期是"xx"月的前一个 月的最后一天("xx"月的最大取值是69,题外话), 当你传入的是"xxxx/xx/1"(1号)的话,得到的日期是"xx"月的后一个 月的第一天(自己理解) 如果传入"1999/13/0",会得到"1998/12/31"。而且最大的好处是当你传入"xxxx/3/0",会得到xxxx年2月的最后一天,它会自动判断当年是否是闰年来返回28或29,不用自己判断, 所以,我们想得到选择年选择月有多少天的话,只需要
var temp=new Date("选择年/选择月+1/0");
return temp.getDate()//最大天数
该方法同样可用于日期的合法性校验。
获取指定年月天数的函数实现
以下是使用JavaScript编写的获取指定年份和月份天数的getDaysInMonth(year, month)函数示例:
function getDaysInMonth(year,month){
month = parseInt(month,10)+1;
var temp = new Date(year+"/"+month+"/0");
return temp.getDate();
}
计算某日所在周数的方法
JavaScript中获取某年某日所在周数的方法
/**
* 判断年份是否为润年
*
* @param {Number} year
*/
function isLeapYear(year) {
return (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
}
/**
* 获取某一年份的某一月份的天数
*
* @param {Number} year
* @param {Number} month
*/
function getMonthDays(year, month) {
return [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month] || (isLeapYear(year) ? 29 : 28);
}
/**
* 获取某年的某天是第几周
* @param {Number} y
* @param {Number} m
* @param {Number} d
* @returns {Number}
*/
function getWeekNumber(y, m, d) {
var now = new Date(y, m - 1, d),
year = now.getFullYear(),
month = now.getMonth(),
days = now.getDate();
//那一天是那一年中的第多少天
for (var i = 0; i < month; i++) {
days += getMonthDays(year, i);
}
//那一年第一天是星期几
var yearFirstDay = new Date(year, 0, 1).getDay() || 7;
var week = null;
if (yearFirstDay == 1) {
week = Math.ceil(days / yearFirstDay);
} else {
days -= (7 - yearFirstDay + 1);
week = Math.ceil(days / 7) + 1;
}
return week;
}
希望上述内容对JavaScript编程有所帮助。
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
相关标签:
