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

作者:袖梨 2022-06-25

最近看到一个有意思的试题,正好在需求中也碰到类似的问题,即计算某个月的天数问题。碰到类似问题也许大部分会想是不是还要判断闰年、平年,如果这样想的话就复杂了,下面给出具体的计算方法。

获取月份天数方法一:

//传入年份和月份 获取该年对应月份的天数
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;
}

第二种方式则是根据所求月份和下一个月份某一天的差值获取对应月份的天数。

相关文章

精彩推荐