天数换算月份_Js 计算指定月份的天数

问题: 怎么在已知年份和月份的情况下,计算出这个月一共有多少天?

这个有两种计算方案

方案一

因为月份总数是固定的,而每月的天数其实也是已知的,所以可以使用数组保存所有月份天数,然后根据月份去数组中取就行了,代码大致如下:

var arr = [31,29,31,30,31,30,31,31,30,31,30,31]; // 保存每一个月的天数

var month = 5; // 已知的月份

alert( month + "月一共有" + arr[month-1] + "天");

但这种方案有一个问题,就是2月份的天数是需要判断处理的,因为有闰年和平年。

方案二

要理解这个思路,需要知道 Date() 对象参数的特性。

Date() 可以获取当前时间,也可以设置成指定日期,比如 new Date(2020,3,15) , 将日期设置为2020年4月15日(月份参数从0开始标签,0表示1月,所以3表示4月)。

而如果参数设置的值超过范围,则会向前进位。

比如 new Date(2020,13,15),月份设置为14月,但实际一年只有12个月,超过月份范围,就会进位,最终设置的日期是 2021年2月15日。

同理,日期如果超过范围同样也会进位。所以 new Date(2020,5, 40) 设置的日期是2020年7月10日(5表示6月,6月只有30天,6月进位成7月,日期40-30,为10日)。

利用以上原理,因为日期不可能超过32天,所以可以利用32这个数字来计算当前月份有多少天。方法是用当前月份作为月份,用32作为日期,去设置日期,这样日期就会进位,然后取出进位后的日期,用 32 减去这个日期就是当月的天数。比如当前月份是6月,年份是2020年,想知道6月有多少天: new Date(2020,6-1,32), 这样设置的实际时间是2020年7月2号,将2号这个日期取出来, 32 - 2 = 30 ,可以得出 6月一共有30天,具体代码大概如下:

var month = 6; // 表示当前月份的变量

var year = 2020; //年份, 这个根据实际情况而定,是给定的值,还是根据当前时间来获取年份。

var newDate = new Date(year, month - 1, 32); // 根据月份设置日期

var day = 32 - newDate.getDate(); // 根据设置的日期来获取当前月份的天数。

alert( month + "月一共有" + day + "天。");

这种思路的好处是不论闰年平年都可以正确获取到2月份的总天数,甚至还可以通过2月份的天数反过来推算出今年是闰年还是平年。

Ps: 没错,百度知道上的那个提问就是我回答的,哈哈。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值