记录一次去哪儿网笔试题(2018/09/06)

这篇博客记录了一道去哪儿网笔试题目,涉及到日期处理和星期排列。给定年份、月份和星期起始日,计算该月第一天和最后一天在排列中的列数。代码实现包括获取指定日期、判断闰年、获取月份天数等函数,并通过事件监听处理用户输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

输入三个数 分别是 年份 月份  以及按星期几开始排列(星期日是0 其他依次为1 2 3 4 5 6)

输出两个数 第一个表示该年月分  第一天在排列中是第几列

                    第二个数  表示该年月份  最后一天在排列中是 第几列

代码如下

<!DOCTYPE html>
<html>
<head>
    <title>日期的小尝试</title>
    <meta charset="utf-8">
    <script>
        // 获得一个指定时间的  Date对象  默认为2018年 1月
        function getNewDate(oYear = 2018, oMonth = 0){
            return new Date(oYear, oMonth-1);
        }

        // 判断是否为闰年
        function isLun(oYear){
            return (oYear%4 == 0 && oYear%100 !=0) || oYear%400 ==0;
        }

        // 获得一个月份 有多少天
        function getNumberDay(oYear, oMonth){
            // 判断是否为闰年
            var flag = isLun(oYear);
            var days = 31;
            switch(oMonth-1){
                case 0: days = 31; break;
                case 1: days = flag ? 29 : 28; break;
                case 2: days = 31; break;
                case 3: days = 30; break;
                case 4: days = 31; break;
                case 5: days = 30; break;
                case 6: days = 31; break;
                case 7: days = 31; break;
                case 8: days = 30; break;
                case 9: days = 31; break;
                case 10: days = 30; break;
                case 11: days = 31; break;
                default: days = 31;
            }
            return days;
        }

        window.onload = function(){
            var oBut = document.getElementById('but');
            oBut.addEventListener('click', function(){
                var oYear =  parseInt(document.getElementById('year').value);
                var oMonth = parseInt(document.getElementById('month').value);
                var oStart = parseInt(document.getElementById('start').value);

                var oDate = getNewDate(oYear, oMonth);

                // 获取具体某年某月 有多少天
                var days = getNumberDay(oYear, oMonth);

                // 获取指定日期  是星期几
                var theDay = oDate.getDay();

                
                // 判断手动设置从 星期几开始 是否大于 当前的日期
                if(theDay >= oStart){
                    // 获取日期开始的列
                    var start = theDay -oStart +1;
                    // 获取日期结束的列
                    var end = (days-(7 -start +1))% 7;
                } else{
                    var start = theDay - oStart +8;
                    var end = (days-(7 -start +1))% 7;;
                }
                
                console.log(oYear, oMonth)
                console.log("几月" + (oDate.getMonth()+1))
                console.log("星期几" + theDay)
                console.log("从第几天开始:"+ oStart)
                console.log('开始日期:' +start);
                console.log("结束日期" + end);
            });
         
        }
    </script>
</head>
<body>
    年份: <input type="text" id="year"> <br>
    月份: <input type="text" id="month"> <br>
    从第几天开始: <input type="text" id="start"> <br>
    <input type="button" value="确定" id="but">
</body>
</html>

总结:

         js中月份是从0开始的,也就是说如果new Date(2018,  9, 1)则表示是 2018/10/01

        这里面求开始列的时候 是根据设置的开始日期当前日期作比较 

                                                设置日期 < 当前日期   则列数表示为 当前日期 - 设计日期 +1

                                                设置日期 > 当前日期   则列数表示为  当前日期 - 设计日期 +1 + 7

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值