简单日历

这两天需要用Javascript做一个简单的日历。网上查了很多,但是大都太复杂。在其中学会了关于日历的一些算法。特别总结一下。
基本思路是根据系统获得的年、月作为参数,将日期填入表格中。
主要方法包括判断是否闰年、判断每个月的第一天是星期几。然后用循环迭代的方式将日期填入表格。
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添加样式实现想要实现的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值