js实现日历在控制台输出

js控制台输出日历

html5设计

首先做一个前端页面,页面放入三个输入框和一个按钮,给按钮绑定单击事件,之后的js部分都在此事件中完成:

<input type="text" name="year" id="Year">年
<input type="text" name="month" id="month">月
<input type="text" name="day" id="day">日
<button onclick="jisuan()">查询</button>

id名可设置可不设置
css样式随意设置

js设计

先从前端页面获取年、月、日的值,此时获取的值是String类型的,虽然在js中String类型也能计算,但此时我们最好还是将其转为Number类型

    var y = Number(document.getElementById('Year').value);
    var mon = Number(document.getElementById('month').value);
    var d = Number(document.getElementById('day').value);
    console.log(y+'年'+mon+'月'+d+'日');

信息:1900年1月1日是周一
然后计算得出输入的年月日是从1900年1月1日往后开始计算的第几天,得出总天数后,将天数余上7,余数就是输入的日期是星期几。

关于总天数的计算

这里涉及到闰年和非闰年天数不一样的情况,闰年366天,非闰年365天,关于闰年的判断就不用多说了吧,都老生常谈了。
先取得1900年到输入年份前一年年底的的总天数,再算出输入日期时输入年的第几天,两者相加就是最终的总天数

   var m = 0;
    var n = 0;

    for (var i = 1900; i< y; i++){
        if (i % 400 == 0 || (i % 4 == 0 && i % 100 != 0)) {
            // console.log(i+"是闰年")
            m+=1;

        }else{
            // console.log( i+'不是闰年')
            n+=1;
        }
    }
    console.log(m*366+n*365);

再算出输入日期时输入年的第几天,这里我用的方法比较憨哈,这里可以将2月份的情况放在最后讨论,这样就可以少写下面12个case或者使用循环解决(这个有人指点,我还没去想),大家自己看看吧!总之最最后得出了总天数。

if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) {
        // console.log("是闰年"+y)
        switch (mon-1) {
            case 1:
                count = 31;
                break;
            case 2:{
                count = 31+29;
                break;
            }
            case 3:
                count = 31+29+31;
                break;
            case 4:
                count = 31+29+31+30;
                break;
            case 5:
                count = 31+29+31+30+31;
                break;
            case 6:
                count = 31+29+31+30+31+30;
                break;
            case 7:
                count = 31+29+31+30+31+30+31;
                break;
            case 8:
                count = 31+29+31+30+31+30+31+31;
                break;
            case 9:
                count = 31+29+31+30+31+30+31+31+30;
                break;
            case 10:
                count = 31+29+31+30+31+30+31+31+30+31;
                break;
            case 11:
                count = 31+29+31+30+31+30+31+31+30+31+30;
                break;
        }
    }else{
        // console.log('不是闰年'+ y)
        switch (mon-1) {
            case 1:
                count = 31;
                break;
            case 2:{
                count = 31+28;
                break;
            }
            case 3:
                count = 31+28+31;
                break;
            case 4:
                count = 31+28+31+30;
                break;
            case 5:
                count = 31+28+31+30+31;
                break;
            case 6:
                count = 31+28+31+30+31+30;
                break;
            case 7:
                count = 31+28+31+30+31+30+31;
                break;
            case 8:
                count = 31+28+31+30+31+30+31+31;
                break;
            case 9:
                count = 31+28+31+30+31+30+31+31+30;
                break;
            case 10:
                count = 31+28+31+30+31+30+31+31+30+31;
                break;
            case 11:
                count = 31+28+31+30+31+30+31+31+30+31+30;
                break;
        }
    }
    // console.log('第一个'+count);
    count = count + d;
    console.log(count);

    var sum = count + m*366+n*365;

    console.log(sum);

    console.log('1900年1月1日到'+y+'年'+mon+'月'+d+'日有'+sum+'天');

算出当前日期星期几,就能知道本月1日星期几

   var yihao = (sum-d+1)%7;
    console.log(mon+'月1日星期'+ yihao);
    for (var i = 1; i < yihao; i++) {
        console.log('*')
     }
    for (var i = 1;i<= mds;i++) {
        console.log(i);
    }

知道本月1日星期几,就能知道日历上1日前空多少格,类似上面算日期是输入年的第几天的法子,能得出当前月有多少天,就能在控制台“画”出日历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值