获取每个月有多少天

最近在项目中偶然发现一段别人写的代码,获取一个中有多少天,以前写这个的时候,基本是定义一个数组

[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]

 

然后用月份做下标去取得到 days, 然后再执行 days += days < 30  && isLeapYear(year) ? 1 : 0; 以此来修正闰年2月份的天数。其中isLeapYear是用判断是否是闰年的,可用下面的方法判断

year % 4 === 0 && year % 100 !== 0 || year % 400 === 0

 

但是在项目中看到的是,如果月份是8月或以上,给月份自加1,这样就可以用  月份%2,根据余数来判定是30天还是31天。省去定义数组的过程。想法不错,但是还是要判断月份是否大于等于8月份。不太好。

 

于是乎有了下面的方法

function isLeapYear(year) {
    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
}

function daysInMonth(month, year) {
    if (month === 2) {
        return isLeapYear(year) ? 29 : 28;
    }
    return Math.ceil(Math.abs(month - 7.5)) % 2 + 30;
}

 

这里的月份是从1-12,如果月份是从0开始到11。可在方法里面做对应的修正。这样是不是更简单点,只是看着没有上面的直观,更没有第一个方法直观

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值