当前位置: 首页 > Web前端 > vue.js

面试题:JS获取一个月的天数

时间:2023-03-31 17:30:58 vue.js

获取一个月的天数。这道题一般是switch(){}一章的案例。我们的解题依据顺口溜:一、三、五、七、八十、31天从来不坏,四、六、九十一,一个月30天,只有2月28日,这一天加起来闰年增加一。(我搜索了一下,忘记怎么背了。)闰年还有一个计算规则:四年一闰,一百年不闰,四百年再闰。能被4整除,但不能被100整除,除非能被400整除。你是不是被上面这个神奇的概念搞晕了?接下来我们实现面试题:JS获取某月的天数,先到测试用例函数getMonthCountDay(year,month){//year是年,month是月}[[2000,2],[2000,1],[2000,3],[2000,4],[2100,2],[2100,1],[2100,3],[2100,4],[2104,2],[2104,1],[2104,3],[2104,4],[2105,2],[2105,1],[2105,3],[2105,4],.map(v=>`${v}=>${getMonthCountDay.apply(null,v)}Day`)Basicversion根据我们的顺口溜,我们来写functiongetMonthCountDay(year,month){switch(month){case1:case3:case5:案例7:案例8:案例10:案例12:返回31案例4:案例6:案例9:案例11:返回30案例2:返回year%400==0?(29):(year%4!=0||year%100==0?28:29)}}写的很好,除了代码看起来有点多,没有其他问题。测试截图使用DateAPI处理日期溢出特性(进位),然后开始显示。functiongetMonthCountDay(year,month){return32-newDate(year,month-1,32).getDate()}没想到这个方法写的很少。测试截图方案原理js中的Date在处理时间的时候会进行进位和退位操作。使用DateAPI处理日期溢出特性(abdicationscheme)只需使用进位,然后减去多余部分。现在我们使用退位函数getMonthCountDay(year,month){returnnewDate(year,month,0).getDate()}测试截图方案原理在js中,Date在处理时间的时候会进行进位退位操作。这个功能还能做什么?获取月初的星期几获取月底的星期几