从基础做起,解决最基本的问题: 1.javascript 中如何获得一个日期值 js中有"Date()"这个关键字,来创建一个日期对象.简单来说 var now = new Date(); 就可以创建一个Date实例 now,当定义没有对Date()附加参数,那么实例包括的年份、月份、日期、时间等都会以当前系统的日期时间作为相应的值.当然也可以指定一个固定的日期,如: var deadline = new Date(2007,6,14); 这样就创建了另一个Date 对象.而这个deadline 实例对应是日期2007年7月14日,这里要注意Date()的第二个参数是月份,值为0~11,对应月份是1~12月,所以实际月份就要相应的加一,详细关于Date说明可以看看这里:http://blog.chinaunix.net/u1/36483/showart_285316.html 其它必须用到日期还有: var date = new Date(2007,4,1);//创建一个实例 var date_month = date.getMonth();//getMonth()返回date实例所指定的月份 var date_year = date.getFullYear();//getFullYear()返回date实例所指定的年份(四位数形式) var date_weekcn = date.getDay();//getDay()返回date实例所指定的日期是星期几,值为0~6,周日为0,周一为1,如此类推 而getDate()则返回实例的日期(月份中的哪一天)
2.闰年的判断,算出那一年是闰年,主要是计算出2月有多少天 先说说闰年的规则: 一:如果年的数目是 4 的倍数,就是闰年。 二:但是,如果年的数目是 100 的倍数,规则一就无效,仍是常年。 三:但是,如果年的数目是 400 的倍数,规则二就无效,仍是闰年。 代码算法:(不对这个算法进行详细论述了,在网上用的普遍都是这个算法,这里,该函数根据参数直接输入某年某月的天数) function countDays(year,month) //根据参数一跟参数二的年月计算该月有多少天,返回就是该月的天数,一月份对0,二月份对应1,如此类推,是从0开始 { var days_in_months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);//定义月份的数组,函数运行可以直接返回一个数值. if (1 == month) return ((0 == year % 4) && (0 != (year % 100))) ||(0 == year % 400) ? 29 : 28; else return days_in_months[month]; }
this.weekcn = new Array ('日','一','二','三','四','五','六'); this.weekcn_en = new Array ('Sun','Mon','Tue','Wed','Thu','Fri','Sat'); this.countDays = function (year,month) //根据参数一跟参数二的年月计算该月有多少天,返回就是该月的天数,一月份对0,二月份对应1,如此类推,是从0开始 { var days_in_months = new Array(31,28,31,30,31,30,31,31,30,31,30,31); if (1 == month) return ((0 == year % 4) && (0 != (year % 100))) ||(0 == year % 400) ? 29 : 28; else return days_in_months[month]; }
this.calendar = function()//日历的内容 { var date = new Date(this.tmp_year,this.tmp_month,1); var date_month = date.getMonth(); var date_year = date.getYear(); var date_weekcn = date.getDay();//星期 var month_days = this.countDays(date_year,date_month); var tmp = 1 - date_weekcn; var date_str=""; //日历显示 //排列星期的标题 date_str+="
"; for (var w=0; w<7; w++) { date_str = date_str+"
"+this.weekcn[w]+"
";//将weekcn[]修改weekcn_en[]日历标题显示为英文 } for (var i=0; i<6; i++) { date_str+="
"; for (var k=0; k<7; k++) { if ((this.year==this.tmp_year)&&(this.month == this.tmp_month)&&(this.date == tmp)) date_str+="
先将类中的参数加上去: function calendar(date_id,cal_id,time_id,today_id)//参数一是显示年月的标签id,参数二是显示日历内容的标签id,参数三是显示时间的标签id,参数四是在日历内容显示当日的样式id {...} 参数三就是在原类上加上去的.然后在类中加入以下代码:
接着就是编写这个类中关于时间显示的成员函数了,代码如下: this.clock = function ()//时钟显示 { var showtime = document.getElementById(this.time_id); var now = new Date(); var hours = now.getHours(); var minutes = now.getMinutes(); var seconds = now.getSeconds(); if (hours<10) hours = "0"+hours; if (minutes<10) minutes = "0"+minutes; if (seconds<10) seconds = "0"+seconds; var showstr = hours+":"+minutes+":"+seconds; showtime.innerHTML=showstr; var self = this; setTimeout(function(){self.clock();},500); }