JS获取指定月份的天数两种实现方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS获取指定月份的天数两种实现方法相关的知识,希望对你有一定的参考价值。

参考技术A 最近看到一个有意思的试题,正好在需求中也碰到类似的问题,即计算某个月的天数问题。碰到类似问题也许大部分会想是不是还要判断闰年、平年,如果这样想的话就复杂了,下面给出具体的计算方法。
获取月份天数方法一:
//传入年份和月份
获取该年对应月份的天数
function
getMonthDays(year,month)
var
thisDate
=
new
Date(year,month,0);
//当天数为0
js自动处理为上一月的最后一天
return
thisDate.getDate();

上面应该时获取月份天数最简单的方法之一了,当Date中参数超出范围时js会自动处理,如果传值小于等于0,则日期将会向前推,否则日期将会向后推。下面时MDN原文,也提到了此现象:
Note:
当Date作为构造函数调用并传入多个参数时,如果数值大于合理范围时(如月份为13或者分钟数为70),相邻的数值会被调整。比如
new
Date(2013,
13,
1)等于new
Date(2014,
1,
1),它们都表示日期2014-02-01(注意月份是从0开始的)。其他数值也是类似,new
Date(2013,
2,
1,
0,
70)等于new
Date(2013,
2,
1,
1,
10),都表示时间2013-03-01T01:10:00。
下面给出几个例子供参考:
1.参数传入负数
2.传入大于规定范围的值
以上可看出,js本身对日期处理还是比较好的,同时开发人员也可以利用这一点获取想要的结果。
获取月份天数方法一:
下面就是比较正常的获取方式了,代码:
//根据两个月份同一天的差值获取,同样是传入需要获取的对应年份和月份
function
getMonthDays(year,month)
var
stratDate
=
new
Date(year,month-1,1),
endData
=
new
Date(year,month,1);
var
days
=
(endData
-stratDate)/(1000*60*60*24);
return
days;

第二种方式则是根据所求月份和下一个月份某一天的差值获取对应月份的天数。
总结
以上所述是小编给大家介绍的JS获取指定月份的天数两种方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
您可能感兴趣的文章:JS获取月份最后天数、最大天数与某日周数的方法JS获取月的最后一天与JS得到一个月份最大天数的实例代码

js怎么输出当前日期和指定日期的相隔天数?谢谢

// 获取当前时间时间戳
var currentTime = Date.now();

// 获取指定时间时间戳
// 注1:这里写的是2012年9月1日0时0分0秒
// 注2:Javascript中月份是实际数字减1
var targetTime = (new Date(2012, 8, 1, 0, 0, 0)).getTime();

// 获取差值,如果指定日期早于现在,则为负数
var offsetTime = targetTime - currentTime;

// 求绝对值,获取相差的时间
offsetTime = Math.abs(offsetTime);

// 将时间转位天数
// 注:Javascript中时间戳的单位是毫秒
var offsetDays = Math.floor(offsetTime / (3600 * 24 * 1e3));

可以写成通用的方法:

function getOffsetDays(time1, time2) 
    var offsetTime = Math.abs(time1 - time2);
    return Math.floor(offsetTime / (3600 * 24 * 1e3));


// 获取相隔天数
getOffsetDays(Date.now(), (new Date(2012, 8, 1)).getTime());

参考技术A var date1=new Date(); //开始时间
var date2=new Date(); //结束时间
var date3=date2.getTime()-date1.getTime() //时间差的毫秒数

------------------------------

//计算出相差天数
var days=Math.floor(date3/(24*3600*1000))追问

怎么给date1赋值?

追答

new Date()

追问

我想document.write输出 2012.9.1到今天的间隔天数,大神求代码

参考技术B function dateDiff(sDate2)
var sDate1=new Date().pattern("yyyy-MM-dd");
sDate2=LEx.util.Format.formatDate(sDate2,"yyyy-MM-dd");
var aDate, oDate1, oDate2, iDays;
aDate = sDate1.split("-");
oDate1 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]); //转换为yyyy-MM-dd格式
aDate = sDate2.split("-");
oDate2 = new Date(aDate[1] + '-' + aDate[2] + '-' + aDate[0]);
iDays = parseInt((oDate1 - oDate2) / 1000 / 60 / 60 / 24); //把相差的毫秒数转换为天数
return iDays; //返回相差天数
来源(http://blog.csdn.net/chenleixing/article/details/44657729)
参考技术C function days(_date)
var date1=new Date().getTime(),date2=new Date(_date).getTime();
return Math.floor((date1-date2)/(24*3600*1000));


alert(days("2016-02-10"));
参考技术D 剑圣是大lol的 怎么可能会算数

以上是关于JS获取指定月份的天数两种实现方法的主要内容,如果未能解决你的问题,请参考以下文章

js日期处理函数 -- 判断闰年,获取当月的总天数添加月份

js获取一个月的天数

JS 如何获取当前上一个月下一个月和月份所含天数

js怎么输出当前日期和指定日期的相隔天数?谢谢

js日期相减求天数 精确到秒

Java获取指定时间段的年份(开始结束时间)月份(开始结束时间)天数(开始结束时间)