这两天需要用Javascript做一个简单的日历。网上查了很多,但是大都太复杂。在其中学会了关于日历的一些算法。特别总结一下。
基本思路是根据系统获得的年、月作为参数,将日期填入表格中。
主要方法包括判断是否闰年、判断每个月的第一天是星期几。然后用循环迭代的方式将日期填入表格。
在table中调用show_calendar(year, month)就可以显示出对应月份的公历日历。然后可以用css添加样式实现想要实现的效果。
基本思路是根据系统获得的年、月作为参数,将日期填入表格中。
主要方法包括判断是否闰年、判断每个月的第一天是星期几。然后用循环迭代的方式将日期填入表格。
function isleapyear(year) {
if (year % 400 == 0) return true;
if (year % 4 == 0 && y % 100 != 0) return true;
else return false;
}
//Caculate What day the first day in a week.
function first_day_in_week(y, m) {
//Array to store the arithmetical compliment that was divisibled by number of a month days.
var day_in_week = new Array(3, 0, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3);
var leap_day_in_week = new Array(3, 1, 3, 2, 3, 2, 3, 3, 2, 3, 2, 3);
var remainder = y - 2000;
//Add the leap days From 2001 Before this year.
for (var j = 2001; j < y; j++) {
if (isleapyear(j)) {
remainder ++ ;
}
}
if (isleapyear(y)) {
for (var i = 0; i < m - 1; i ++) {
remainder += leap_day_in_week[i];
}
} else {
for (var i = 0; i < m - 1; i ++) {
remainder += day_in_week[i];
}
}
return remainder % 7;
}
function show_calendar(y, m) {
var fdiw = first_day_in_week(y, m);
//The leap year.
if (isleap(year)) {
//The first line of Calendar.
document.write("<tr>");
for (var date = 0; date < 7; date ++) {
if (date < fdiw) {
document.write("<td> </td>");
} else {
document.write("<td>" + (date - fdiw + 1) + "</td>");
}
}
document.write("</tr>");
//The other line of Calendar.
data = 7 - fdiw - 1;
for (var loop = 0; loop < 5; loop ++) {
for (var day = 0; day < 7; day ++) {
if (date <= leap_months[m - 1]) {
if (day == 0) {
document.write("<tr><td>" + date + "</td>");
} else if (day == 6) {
document.write("<td>" + date + "</td></tr>");
} else {
document.write("<td>" + date + "</td>");
}
date ++;
} else {
document.write(" ");
}
}
}
} else {
//The unleap year.
//The first line of Calendar.
document.write("<tr>");
for (var date = 0; date < 7; date ++) {
if (date < fdiw) {
document.write("<td> </td>");
} else {
document.write("<td>" + (date - fdiw + 1) + "</td>");
}
}
document.write("</tr>");
//The other line of Calendar.
var date = 7 - fdiw + 1;
for (var loop = 0; loop < 5; loop ++) {
for (var day = 0; day < 7; day ++) {
if (date <= months[m - 1]) {
if (day == 0) {
document.write("<tr><td>" + date + "</td>");
} else if (day == 6) {
document.write("<td>" + date + "</td></tr>");
} else {
document.write("<td>" + date + "</td>");
}
date ++;
} else {
document.write(" ");
}
}
}
}
}在table中调用show_calendar(year, month)就可以显示出对应月份的公历日历。然后可以用css添加样式实现想要实现的效果。
4562

被折叠的 条评论
为什么被折叠?



