第一份技术文章、有什么错点请多多包容。

2018-08-25  本文已影响0人  李健的小迷弟

一 利用js函数打印日历

定义变量年份、月份

var _year=2018,
      _month=8;

定义函数判断指定年份是否为闰年。

是返回值 return <Boolean> ture 为闰年 false:为平年;
代码如下:

function isLeapYear(year) {
   return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
   //判断平闰年条件 
}

定义函数计算指定年月的月份天数。

代入上个函数判断所选年份是否为闰年,在用switch结构分别给出各个月份的天数;
代码如下:

function calcMonthDays(year, month) {
            // 保存天数
            var _days;
            switch(month) {
                case 2:
                    _days = isLeapYear(year) ? 29 : 28;
                    break;
                case 4:
                case 6:
                case 9:
                case 11:
                    _days = 30;
                    break;
                default:
                    _days = 31;
            }
            // 返回天数
            return _days;
        }

定义函数计算指定年月的1号距离1900-1-1是第多少天。

代码如下:

function calcTotalDays(year, month) {
            // 总天数
            var _totalDays = 1;
            // 求year年month月1号是当年第多少天
            for (var i = 1; i < month; i++) { // i 输入月份之前每个月
                _totalDays += calcMonthDays(year, i);
            }
            // 累加年份的总天数
            for (var i = 1900; i < year; i++) { // 1900之间的每一年
                _totalDays += isLeapYear(i) ? 366 : 365;
            }
            // 返回总天数
            return _totalDays;
        }

定义函数求指定年月1号是星期几。

代码如下:

function calcWeekday(year, month) {
            // 求年月1号距1900-1-1总共多少天
            var _totalDays = calcTotalDays(year, month);
            // 求星期
            var _weekday = _totalDays % 7;
            // 返回
            return _weekday;
        }

定义函数打印日历。

代码如下:

function  print(year,month){
           
          var calender="日\t一\t二\t三\t四\t五\t六"+"\n";
            //定义首行内容、\t表示制表符号:用作对齐格式。\n表示换行。
            for(var i=0;i<calcWeekday(year,month);i++)
               {
                calender+="\t";
                //调用上个函数判断应该在1号前打印多少空格并制表
               }
               
            for(var i=1;i<=CalcMonthDay(year,month);i++){
                calender+=i+"\t";
                //调用月份天数函数循环每月有多少天
                if((calcWeekday(year,month)+i)%7===0)
                calender+="\n"; //换行
                       //调用上个函数判断1号所在星期几加上这个月的几号i,如果能够整除7(一个星期),则换行    
            }
            
            return calender; //返回值;
    }

         console.log(print(_year,_month));//打印前面定义的年份、月份的日历
上一篇 下一篇

猜你喜欢

热点阅读