一 利用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));//打印前面定义的年份、月份的日历
网友评论