< HTML >< HEAD >< TITLE > 万年历查询 </ TITLE >
< META 
content
= " 农历; 阳历; 月历; 节日; 时区; 节气; 八字; 干支; 生肖; gregorian solar; chinese lunar; calendar; "  
name
= keywords >
< META content = All name = robots >
< META content = " gregorian solar calendar and chinese lunar calendar "  
name
= description >
< META http - equiv = Content - Type content = " text/html; charset=gb2312 " >
< style type = " text/css " >

{fONT - FAMILY: 宋体; FONT - SIZE: 9pt;line - height:12pt:color:# 000000 }

TD 
{fONT - FAMILY: 宋体,simsun; FONT - SIZE: 9pt}
    
a:link
{ color:# 000000 ; text - decoration:none}      
a:visited
{COLOR: # 000000 ; TEXT - DECORATION: none}  
a:active
{color:green;text - decoration:none}
a:hover
{color:red;text - decoration:underline}   
 
</ style >



< SCRIPT language = JavaScript >
<!--
/** ***************************************************************************
                                   日期资料
****************************************************************************
*/


var lunarInfo
= new  Array(
0x04bd8 , 0x04ae0 , 0x0a570 , 0x054d5 , 0x0d260 , 0x0d950 , 0x16554 , 0x056a0 , 0x09ad0 , 0x055d2 ,
0x04ae0 , 0x0a5b6 , 0x0a4d0 , 0x0d250 , 0x1d255 , 0x0b540 , 0x0d6a0 , 0x0ada2 , 0x095b0 , 0x14977 ,
0x04970 , 0x0a4b0 , 0x0b4b5 , 0x06a50 , 0x06d40 , 0x1ab54 , 0x02b60 , 0x09570 , 0x052f2 , 0x04970 ,
0x06566 , 0x0d4a0 , 0x0ea50 , 0x06e95 , 0x05ad0 , 0x02b60 , 0x186e3 , 0x092e0 , 0x1c8d7 , 0x0c950 ,
0x0d4a0 , 0x1d8a6 , 0x0b550 , 0x056a0 , 0x1a5b4 , 0x025d0 , 0x092d0 , 0x0d2b2 , 0x0a950 , 0x0b557 ,
0x06ca0 , 0x0b550 , 0x15355 , 0x04da0 , 0x0a5b0 , 0x14573 , 0x052b0 , 0x0a9a8 , 0x0e950 , 0x06aa0 ,
0x0aea6 , 0x0ab50 , 0x04b60 , 0x0aae4 , 0x0a570 , 0x05260 , 0x0f263 , 0x0d950 , 0x05b57 , 0x056a0 ,
0x096d0 , 0x04dd5 , 0x04ad0 , 0x0a4d0 , 0x0d4d4 , 0x0d250 , 0x0d558 , 0x0b540 , 0x0b6a0 , 0x195a6 ,
0x095b0 , 0x049b0 , 0x0a974 , 0x0a4b0 , 0x0b27a , 0x06a50 , 0x06d40 , 0x0af46 , 0x0ab60 , 0x09570 ,
0x04af5 , 0x04970 , 0x064b0 , 0x074a3 , 0x0ea50 , 0x06b58 , 0x055c0 , 0x0ab60 , 0x096d5 , 0x092e0 ,
0x0c960 , 0x0d954 , 0x0d4a0 , 0x0da50 , 0x07552 , 0x056a0 , 0x0abb7 , 0x025d0 , 0x092d0 , 0x0cab5 ,
0x0a950 , 0x0b4a0 , 0x0baa4 , 0x0ad50 , 0x055d9 , 0x04ba0 , 0x0a5b0 , 0x15176 , 0x052b0 , 0x0a930 ,
0x07954 , 0x06aa0 , 0x0ad50 , 0x05b52 , 0x04b60 , 0x0a6e6 , 0x0a4e0 , 0x0d260 , 0x0ea65 , 0x0d530 ,
0x05aa0 , 0x076a3 , 0x096d0 , 0x04bd7 , 0x04ad0 , 0x0a4d0 , 0x1d0b6 , 0x0d250 , 0x0d520 , 0x0dd45 ,
0x0b5a0 , 0x056d0 , 0x055b2 , 0x049b0 , 0x0a577 , 0x0a4b0 , 0x0aa50 , 0x1b255 , 0x06d20 , 0x0ada0 ,
0x14b63 );

var solarMonth
= new  Array( 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 );
var Gan
= new  Array( " " , " " , " " , " " , " " , " " , " " , " " , " " , " " );
var Zhi
= new  Array( " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " );
var Animals
= new  Array( " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " , " " );
var solarTerm 
=   new  Array( " 小寒 " , " 大寒 " , " 立春 " , " 雨水 " , " 惊蛰 " , " 春分 " , " 清明 " , " 谷雨 " , " 立夏 " , " 小满 " , " 芒种 " , " 夏至 " , " 小暑 " , " 大暑 " , " 立秋 " , " 处暑 " , " 白露 " , " 秋分 " , " 寒露 " , " 霜降 " , " 立冬 " , " 小雪 " , " 大雪 " , " 冬至 " );
var sTermInfo 
=   new  Array( 0 , 21208 , 42467 , 63836 , 85337 , 107014 , 128867 , 150921 , 173149 , 195551 , 218072 , 240693 , 263343 , 285989 , 308563 , 331033 , 353350 , 375494 , 397447 , 419210 , 440795 , 462224 , 483532 , 504758 );
var nStr1 
=   new  Array( ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' , ' ' );
var nStr2 
=   new  Array( ' ' , ' ' , ' 廿 ' , ' ' , ' ' );
var monthName 
=   new  Array( " JAN " , " FEB " , " MAR " , " APR " , " MAY " , " JUN " , " JUL " , " AUG " , " SEP " , " OCT " , " NOV " , " DEC " );

// 国历节日 *表示放假日
var sFtv  =   new  Array(
" 0101*元旦节 " ,
" 0202 世界湿地日 " ,
" 0210 国际气象节 " ,
" 0214 情人节 " ,
" 0301 国际海豹日 " ,
" 0303 全国爱耳日 " ,
" 0305 学雷锋纪念日 " ,
" 0308 妇女节 " ,
" 0312 植树节 孙中山逝世纪念日 " ,
" 0314 国际警察日 " ,
" 0315 消费者权益日 " ,
" 0317 中国国医节 国际航海日 " ,
" 0321 世界森林日 消除种族歧视国际日 世界儿歌日 " ,
" 0322 世界水日 " ,
" 0323 世界气象日 " ,
" 0324 世界防治结核病日 " ,
" 0325 全国中小学生安全教育日 " ,
" 0330 巴勒斯坦国土日 " ,
" 0401 愚人节 全国爱国卫生运动月(四月) 税收宣传月(四月) " ,
" 0407 世界卫生日 " ,
" 0422 世界地球日 " ,
" 0423 世界图书和版权日 " ,
" 0424 亚非新闻工作者日 " ,
" 0501*劳动节 " ,
" 0502*劳动节假日 " ,
" 0503*劳动节假日 " ,
" 0504 青年节 " ,
" 0505 碘缺乏病防治日 " ,
" 0508 世界红十字日 " ,
" 0512 国际护士节 " ,
" 0515 国际家庭日 " ,
" 0517 国际电信日 " ,
" 0518 国际博物馆日 " ,
" 0520 全国学生营养日 " ,
" 0523 国际牛奶日 " ,
" 0531 世界无烟日 "
" 0601 国际儿童节 " ,
" 0605 世界环境保护日 " ,
" 0606 全国爱眼日 " ,
" 0617 防治荒漠化和干旱日 " ,
" 0623 国际奥林匹克日 " ,
" 0625 全国土地日 " ,
" 0626 国际禁毒日 " ,
" 0701 香港回归纪念日 中共诞辰 世界建筑日 " ,
" 0702 国际体育记者日 " ,
" 0707 抗日战争纪念日 " ,
" 0711 世界人口日 " ,
" 0730 非洲妇女日 " ,
" 0801 建军节 " ,
" 0808 中国男子节(爸爸节) " ,
" 0815 抗日战争胜利纪念 " ,
" 0908 国际扫盲日 国际新闻工作者日 " ,
" 0909 毛泽东逝世纪念 " ,
" 0910 中国教师节 "
" 0914 世界清洁地球日 " ,
" 0916 国际臭氧层保护日 " ,
" 0918 九·一八事变纪念日 " ,
" 0920 国际爱牙日 " ,
" 0927 世界旅游日 " ,
" 0928 孔子诞辰 " ,
" 1001*国庆节 世界音乐日 国际老人节 " ,
" 1002*国庆节假日 国际和平与民主自由斗争日 " ,
" 1003*国庆节假日 " ,
" 1004 世界动物日 " ,
" 1006 老人节 " ,
" 1008 全国高血压日 世界视觉日 " ,
" 1009 世界邮政日 万国邮联日 " ,
" 1010 辛亥革命纪念日 世界精神卫生日 " ,
" 1013 世界保健日 国际教师节 " ,
" 1014 世界标准日 " ,
" 1015 国际盲人节(白手杖节) " ,
" 1016 世界粮食日 " ,
" 1017 世界消除贫困日 " ,
" 1022 世界传统医药日 " ,
" 1024 联合国日 " ,
" 1031 世界勤俭日 " ,
" 1107 十月社会主义革命纪念日 " ,
" 1108 中国记者日 " ,
" 1109 全国消防安全宣传教育日 " ,
" 1110 世界青年节 " ,
" 1111 国际科学与和平周(本日所属的一周) " ,
" 1112 孙中山诞辰纪念日 " ,
" 1114 世界糖尿病日 " ,
" 1117 国际大学生节 世界学生节 " ,
" 1120*彝族年 " ,
" 1121*彝族年 世界问候日 世界电视日 " ,
" 1122*彝族年 " ,
" 1129 国际声援巴勒斯坦人民国际日 " ,
" 1201 世界艾滋病日 " ,
" 1203 世界残疾人日 " ,
" 1205 国际经济和社会发展志愿人员日 " ,
" 1208 国际儿童电视日 " ,
" 1209 世界足球日 " ,
" 1210 世界人权日 " ,
" 1212 西安事变纪念日 " ,
" 1213 南京大屠杀(1937年)纪念日!紧记血泪史! " ,
" 1220 澳门回归纪念 " ,
" 1221 国际篮球日 " ,
" 1224 平安夜 " ,
" 1225 圣诞节 " ,
" 1226 毛泽东诞辰纪念 " )

// 农历节日 *表示放假日
var lFtv  =   new  Array(
" 0101*春节 " ,
" 0102*初二 " ,
" 0103*初三 " ,
" 0115 元宵节 " ,
" 0505 端午节 " ,
" 0707 七夕情人节 " ,
" 0715 中元节 " ,
" 0815 中秋节 " ,
" 0909 重阳节 " ,
" 1208 腊八节 " ,
" 1223 小年 " ,
" 0100 除夕 " )

// 某月的第几个星期几
var wFtv  =   new  Array(
" 0150 世界麻风日 " // 一月的最后一个星期日(月倒数第一个星期日)
" 0520 国际母亲节 " ,
" 0530 全国助残日 " ,
" 0630 父亲节 " ,
" 0730 被奴役国家周 " ,
" 0932 国际和平日 " ,
" 0940 国际聋人节 世界儿童日 " ,
" 0950 世界海事日 " ,
" 1011 国际住房日 " ,
" 1013 国际减轻自然灾害日(减灾日) " ,
" 1144 感恩节 " )

/** ***************************************************************************
日期计算
****************************************************************************
*/


// ====================================== 返回农历 y年的总天数
function lYearDays(y)  {
var i, sum 
=   348 ;
for (i = 0x8000 ; i > 0x8 ; i >>= 1 ) sum  +=  (lunarInfo[y - 1900 &  i) ?   1 0 ;
return (sum + leapDays(y));
}


// ====================================== 返回农历 y年闰月的天数
function leapDays(y)  {
if (leapMonth(y))   return ((lunarInfo[y - 1900 &   0x10000 ) ?   30 29 );
else   return ( 0 );
}


// ====================================== 返回农历 y年闰哪个月 1-12 , 没闰返回 0
function leapMonth(y)  {
return (lunarInfo[y - 1900 &   0xf );
}


// ====================================== 返回农历 y年m月的总天数
function monthDays(y,m)  {
return ( (lunarInfo[y - 1900 &  ( 0x10000 >> m)) ?   30 29  );
}



// ====================================== 算出农历, 传入日期控件, 返回农历日期控件
//                                        该控件属性有 .year .month .day .isLeap
function Lunar(objDate)  {

var i, leap
= 0 , temp = 0 ;
var offset   
=  (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate())  -  Date.UTC( 1900 , 0 , 31 )) / 86400000 ;

for (i = 1900 ; i < 2050   &&  offset > 0 ; i ++ { temp = lYearDays(i); offset -= temp; }

if (offset < 0 { offset += temp; i -- ; }

this .year  =  i;

leap 
=  leapMonth(i);  // 闰哪个月
this .isLeap  =   false ;

for (i = 1 ; i < 13   &&  offset > 0 ; i ++ {
// 闰月
if (leap > 0   &&  i == (leap + 1 &&   this .isLeap == false )
-- i;  this .isLeap  =   true ; temp  =  leapDays( this .year); }
else
{ temp  =  monthDays( this .year, i); }

// 解除闰月
if ( this .isLeap == true   &&  i == (leap + 1 ))  this .isLeap  =   false ;

offset 
-=  temp;
}


if (offset == 0   &&  leap > 0   &&  i == leap + 1 )
if ( this .isLeap)
this .isLeap  =   false ; }
else
this .isLeap  =   true -- i; }

if (offset < 0 ) { offset  +=  temp;  -- i; }

this .month  =  i;
this .day  =  offset  +   1 ;
}


// ==============================返回公历 y年某m+1月的天数
function solarDays(y,m)  {
if (m == 1 )
return (((y % 4   ==   0 &&  (y % 100   !=   0 ||  (y % 400   ==   0 )) ?   29 28 );
else
return (solarMonth[m]);
}

// ============================== 传入 offset 返回干支, 0=甲子
function cyclical(num)  {
return (Gan[num % 10 ] + Zhi[num % 12 ]);
}


// ============================== 阴历属性
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay)  {

this .isToday     =   false ;
// 瓣句
this .sYear       =  sYear;    // 公元年4位数字
this .sMonth      =  sMonth;   // 公元月数字
this .sDay        =  sDay;     // 公元日数字
this .week        =  week;     // 星期, 1个中文
// 农历
this .lYear       =  lYear;    // 公元年4位数字
this .lMonth      =  lMonth;   // 农历月数字
this .lDay        =  lDay;     // 农历日数字
this .isLeap      =  isLeap;   // 是否为农历闰月?
// 八字
this .cYear       =  cYear;    // 年柱, 2个中文
this .cMonth      =  cMonth;   // 月柱, 2个中文
this .cDay        =  cDay;     // 日柱, 2个中文

this .color       =   '' ;

this .lunarFestival  =   '' // 农历节日
this .solarFestival  =   '' // 公历节日
this .solarTerms     =   '' // 节气
}


// ===== 某年的第n个节气为几日(从0小寒起算)
function sTerm(y,n)  {
var offDate 
=   new  Date( (  31556925974.7 * (y - 1900 +  sTermInfo[n] * 60000   )  +  Date.UTC( 1900 , 0 , 6 , 2 , 5 ) );
return (offDate.getUTCDate());
}





// ============================== 返回阴历控件 (y年,m+1月)
/*
功能说明: 返回整个月的日期资料控件

使用方式: OBJ = new calendar(年,零起算月);

OBJ.length      返回当月最大日
OBJ.firstWeek   返回当月一日星期

由 OBJ[日期].属性名称 即可取得各项值

OBJ[日期].isToday  返回是否为今日 true 或 false

其他 OBJ[日期] 属性参见 calElement() 中的注解
*/

function calendar(y,m) 
{

var sDObj, lDObj, lY, lM, lD
= 1 , lL, lX = 0 , tmp1, tmp2, tmp3;
var cY, cM, cD; 
// 年柱,月柱,日柱
var lDPOS  =   new  Array( 3 );
var n 
=   0 ;
var firstLM 
=   0 ;

sDObj 
=   new  Date(y,m, 1 , 0 , 0 , 0 , 0 );     // 当月一日日期

this .length     =  solarDays(y,m);     // 公历当月天数
this .firstWeek  =  sDObj.getDay();     // 公历当月1日星期几

//////// 年柱 1900年立春后为庚子年(60进制36)
if (m < 2 ) cY = cyclical(y - 1900 + 36 - 1 );
else  cY = cyclical(y - 1900 + 36 );
var term2
= sTerm(y, 2 );  // 立春日期

//////// 月柱 1900年1月小寒以前为 丙子月(60进制12)
var firstNode  =  sTerm(y,m * 2 // 返回当月「节」为几日开始
cM  =  cyclical((y - 1900 ) * 12 + m + 12 );

// 当月一日与 1900/1/1 相差天数
// 1900/1/1与 1970/1/1 相差25567日, 1900/1/1 日柱为甲戌日(60进制10)
var dayCyclical  =  Date.UTC(y,m, 1 , 0 , 0 , 0 , 0 ) / 86400000 + 25567 + 10 ;

for (var i = 0 ;i < this .length;i ++ {

if (lD > lX)  {
sDObj 
=   new  Date(y,m,i + 1 );     // 当月一日日期
lDObj  =   new  Lunar(sDObj);      // 农历
lY     =  lDObj.year;            // 农历年
lM     =  lDObj.month;           // 农历月
lD     =  lDObj.day;             // 农历日
lL     =  lDObj.isLeap;          // 农历是否闰月
lX     =  lL ?  leapDays(lY): monthDays(lY,lM);  // 农历当月最后一天

if (n == 0 ) firstLM  =  lM;
lDPOS[n
++ =  i - lD + 1 ;
}


// 依节气调整二月分的年柱, 以立春为界
if (m == 1   &&  (i + 1 ) == term2) cY = cyclical(y - 1900 + 36 );
// 依节气月柱, 以「节」为界
if ((i + 1 ) == firstNode) cM  =  cyclical((y - 1900 ) * 12 + m + 13 );
// 日柱
cD  =  cyclical(dayCyclical + i);

// sYear,sMonth,sDay,week,
// lYear,lMonth,lDay,isLeap,
// cYear,cMonth,cDay
this [i]  =   new  calElement(y, m + 1 , i + 1 , nStr1[(i + this .firstWeek) % 7 ],
lY, lM, lD
++ , lL,
cY ,cM, cD );
}


// 节气
tmp1 = sTerm(y,m * 2   ) - 1 ;
tmp2
= sTerm(y,m * 2 + 1 ) - 1 ;
this [tmp1].solarTerms  =  solarTerm[m * 2 ];
this [tmp2].solarTerms  =  solarTerm[m * 2 + 1 ];
if (m == 3 this [tmp1].color  =   ' red ' // 清明颜色

// 公历节日
for (i in sFtv)
if (sFtv[i].match( /^ (d { 2 } )(d { 2 } )([s * ])(. + )$ / ))
if (Number(RegExp.$ 1 ) == (m + 1 ))  {
this [Number(RegExp.$ 2 ) - 1 ].solarFestival  +=  RegExp.$ 4   +   '   ' ;
if (RegExp.$ 3 == ' * ' this [Number(RegExp.$ 2 ) - 1 ].color  =   ' red ' ;
}


// 月周节日
for (i in wFtv)
if (wFtv[i].match( /^ (d { 2 } )(d)(d)([s * ])(. + )$ / ))
if (Number(RegExp.$ 1 ) == (m + 1 ))  {
tmp1
= Number(RegExp.$ 2 );
tmp2
= Number(RegExp.$ 3 );
if (tmp1 < 5 )
this [(( this .firstWeek > tmp2) ? 7 : 0 +   7 * (tmp1 - 1 +  tmp2  -   this .firstWeek].solarFestival  +=  RegExp.$ 5   +   '   ' ;
else   {
tmp1 
-=   5 ;
tmp3 
=  ( this .firstWeek + this .length - 1 ) % 7 // 当月最后一天星期?
this [ this .length  -  tmp3  -   7 * tmp1  +  tmp2  -  (tmp2 > tmp3 ? 7 : 0 -   1  ].solarFestival  +=  RegExp.$ 5   +   '   ' ;
}

}


// 农历节日
for (i in lFtv)
if (lFtv[i].match( /^ (d { 2 } )(. { 2 } )([s * ])(. + )$ / ))  {
tmp1
= Number(RegExp.$ 1 ) - firstLM;
if (tmp1 ==- 11 ) tmp1 = 1 ;
if (tmp1  >= 0   &&  tmp1 < n)  {
tmp2 
=  lDPOS[tmp1]  +  Number(RegExp.$ 2 - 1 ;
if ( tmp2  >=   0   &&  tmp2 < this .length  &&   this [tmp2].isLeap != true {
this [tmp2].lunarFestival  +=  RegExp.$ 4   +   '   ' ;
if (RegExp.$ 3 == ' * ' this [tmp2].color  =   ' red ' ;
}

}

}



// 复活节只出现在3或4月
if (m == 2   ||  m == 3 {
var estDay 
=   new  easter(y);
if (m  ==  estDay.m)
this [estDay.d - 1 ].solarFestival  =   this [estDay.d - 1 ].solarFestival + '  复活节 Easter Sunday ' ;
}



if (m == 2 this [ 20 ].solarFestival  =   this [ 20 ].solarFestival + unescape( ' %20%u6D35%u8CE2%u751F%u65E5 ' );

// 黑色星期五
if (( this .firstWeek + 12 ) % 7 == 5 )
this [ 12 ].solarFestival  +=   ' 黑色星期五 ' ;

// 今日
if (y == tY  &&  m == tM)  this [tD - 1 ].isToday  =   true ;
}


// ======================================= 返回该年的复活节(春分后第一次满月周后的第一主日)
function easter(y)  {

var term2
= sTerm(y, 5 );  // 取得春分日期
var dayTerm2  =   new  Date(Date.UTC(y, 2 ,term2, 0 , 0 , 0 , 0 ));  // 取得春分的公历日期控件(春分一定出现在3月)
var lDayTerm2  =   new  Lunar(dayTerm2);  // 取得取得春分农历

if (lDayTerm2.day < 15 // 取得下个月圆的相差天数
var lMlen =   15 - lDayTerm2.day;
else
var lMlen
=  (lDayTerm2.isLeap ?  leapDays(y): monthDays(y,lDayTerm2.month))  -  lDayTerm2.day  +   15 ;

// 一天等于 1000*60*60*24 = 86400000 毫秒
var l15  =   new  Date(dayTerm2.getTime()  +   86400000 * lMlen );  // 求出第一次月圆为公历几日
var dayEaster  =   new  Date(l15.getTime()  +   86400000 * 7 - l15.getUTCDay() ) );  // 求出下个周日

this .m  =  dayEaster.getUTCMonth();
this .d  =  dayEaster.getUTCDate();

}


// ====================== 中文日期
function cDay(d) {
var s;

switch  (d)  {
case   10 :
=   ' 初十 ' break ;
case   20 :
=   ' 二十 ' break ;
break ;
case   30 :
=   ' 三十 ' break ;
break ;
default  :
=  nStr2[Math.floor(d / 10 )];
+=  nStr1[d % 10 ];
}

return (s);
}


////////////////////////////////////////////////////////////////////////////// /

var cld;

function drawCld(SY,SM) 
{
var i,sD,s,size;
cld 
=   new  calendar(SY,SM);

if (SY > 1874   &&  SY < 1909 ) yDisplay  =   ' 光绪 '   +  (((SY - 1874 ) == 1 ) ? ' ' :SY - 1874 );
if (SY > 1908   &&  SY < 1912 ) yDisplay  =   ' 宣统 '   +  (((SY - 1908 ) == 1 ) ? ' ' :SY - 1908 );

if (SY > 1911 ) yDisplay  =   ' 建国 '   +  (((SY - 1949 ) == 1 ) ? ' ' :SY - 1949 );

GZ.innerHTML 
=  yDisplay  + ' 年 农历  '   +  cyclical(SY - 1900 + 36 +   ' 年 【 ' + Animals[(SY - 4 ) % 12 ] + ' 年】 ' ;

YMBG.innerHTML 
=   " &nbsp; "   +  SY  +   " <BR>&nbsp; "   +  monthName[SM];

for (i = 0 ;i < 42 ;i ++ {

sObj
= eval( ' SD ' +  i);
lObj
= eval( ' LD ' +  i);

sObj.className 
=   '' ;

sD 
=  i  -  cld.firstWeek;

if (sD >- 1   &&  sD < cld.length)  // 日期内
sObj.innerHTML  =  sD + 1 ;

if (cld[sD].isToday) sObj.className  =   ' todyaColor ' // 今日颜色

sObj.style.color 
=  cld[sD].color;  // 法定假日颜色

if (cld[sD].lDay == 1 // 显示农历月
lObj.innerHTML  =   ' <b> ' + (cld[sD].isLeap ? ' ' : '' +  cld[sD].lMonth  +   ' '   +  (monthDays(cld[sD].lYear,cld[sD].lMonth) == 29 ? ' ' : ' ' ) + ' </b> ' ;
else   // 显示农历日
lObj.innerHTML  =  cDay(cld[sD].lDay);

s
= cld[sD].lunarFestival;
if (s.length > 0 // 农历节日
if (s.length > 6 ) s  =  s.substr( 0 4 ) + ' ' ;
=  s.fontcolor( ' red ' );
}

else   // 公历节日
s = cld[sD].solarFestival;
if (s.length > 0 {
size 
=  (s.charCodeAt( 0 ) > 0   &&  s.charCodeAt( 0 ) < 128 ) ? 8 : 4 ;
if (s.length > size + 2 ) s  =  s.substr( 0 , size) + ' ' ;
s
= (s == ' 黑色星期五 ' ) ? s.fontcolor( ' black ' ):s.fontcolor( ' blue ' );
}

else   // 廿四节气
s = cld[sD].solarTerms;
if (s.length > 0 ) s  =  s.fontcolor( ' limegreen ' );
}

}


if (cld[sD].solarTerms == ' 清明 ' ) s  =   ' 清明节 ' .fontcolor( ' red ' );
if (cld[sD].solarTerms == ' 芒种 ' ) s  =   ' 芒种节 ' .fontcolor( ' red ' );
if (cld[sD].solarTerms == ' 夏至 ' ) s  =   ' 夏至节 ' .fontcolor( ' red ' );
if (cld[sD].solarTerms == ' 冬至 ' ) s  =   ' 冬至节 ' .fontcolor( ' red ' );



if (s.length > 0 ) lObj.innerHTML  =  s;

}

else   // 非日期
sObj.innerHTML  =   '' ;
lObj.innerHTML 
=   '' ;
}

}

}



function changeCld() 
{
var y,m;
y
= CLD.SY.selectedIndex + 1900 ;
m
= CLD.SM.selectedIndex;
drawCld(y,m);
}


function pushBtm(K) 
{
switch  (K) {
case   ' YU '  :
if (CLD.SY.selectedIndex > 0 ) CLD.SY.selectedIndex -- ;
break ;
case   ' YD '  :
if (CLD.SY.selectedIndex < 150 ) CLD.SY.selectedIndex ++ ;
break ;
case   ' MU '  :
if (CLD.SM.selectedIndex > 0 {
CLD.SM.selectedIndex
-- ;
}

else   {
CLD.SM.selectedIndex
= 11 ;
if (CLD.SY.selectedIndex > 0 ) CLD.SY.selectedIndex -- ;
}

break ;
case   ' MD '  :
if (CLD.SM.selectedIndex < 11 {
CLD.SM.selectedIndex
++ ;
}

else   {
CLD.SM.selectedIndex
= 0 ;
if (CLD.SY.selectedIndex < 150 ) CLD.SY.selectedIndex ++ ;
}

break ;
default  :
CLD.SY.selectedIndex
= tY - 1900 ;
CLD.SM.selectedIndex
= tM;
}

changeCld();
}


var Today 
=   new  Date();
var tY 
=  Today.getFullYear();
var tM 
=  Today.getMonth();
var tD 
=  Today.getDate();
//////////////////////////////////////////////////////////////////////////////

var width 
=   " 130 " ;
var offsetx 
=   2 ;
var offsety 
=   8 ;

var x 
=   0 ;
var y 
=   0 ;
var snow 
=   0 ;
var sw 
=   0 ;
var cnt 
=   0 ;

var dStyle;
document.onmousemove 
=  mEvn;

// 显示详细日期资料
function mOvr(v)  {
var s,festival;
var sObj
= eval( ' SD ' +  v);
var d
= sObj.innerHTML - 1 ;

// sYear,sMonth,sDay,week,
// lYear,lMonth,lDay,isLeap,
// cYear,cMonth,cDay

if (sObj.innerHTML != '' {

sObj.style.cursor 
=   ' s-resize ' ;

if (cld[d].solarTerms  ==   ''   &&  cld[d].solarFestival  ==   ''   &&  cld[d].lunarFestival  ==   '' )
festival 
=   '' ;
else
festival 
=   ' <TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD> ' +
' <FONT COLOR="#000000" STYLE="font-size:9pt;"> ' + cld[d].solarTerms  +   '   '   +  cld[d].solarFestival  +   '   '   +  cld[d].lunarFestival + ' </FONT></TD> ' +
' </TR></TABLE> ' ;

s
=   ' <TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066" style="filter:Alpha(opacity=80)"><TR><TD> '   +
' <TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;"> ' +
cld[d].sYear
+ '  年  ' + cld[d].sMonth + '  月  ' + cld[d].sDay + '  日<br>星期 ' + cld[d].week + ' <br> ' +
' <font color="violet">农历 ' + (cld[d].isLeap ? ' 闰  ' : '   ' ) + cld[d].lMonth + '  月  ' + cld[d].lDay + '  日</font><br> ' +
' <font color="yellow"> ' + cld[d].cYear + ' 年  ' + cld[d].cMonth + ' 月  ' + cld[d].cDay  +   ' 日</font> ' +
' </FONT></TD></TR></TABLE> ' +  festival  + ' </TD></TR></TABLE> ' ;

document.all[
" detail " ].innerHTML  =  s;

if  (snow  ==   0 {
dStyle.left 
=  x + offsetx - (width / 2 );
dStyle.top 
=  y + offsety;
dStyle.visibility 
=   " visible " ;
snow 
=   1 ;
}

}

}


// 清除详细日期资料
function mOut()  {
if  ( cnt  >=   1  )  { sw  =   0 ; }
if  ( sw  ==   0  )  { snow  =   0 ; dStyle.visibility  =   " hidden " ;}
else  cnt ++ ;
}


// 取得位置
function mEvn()  {
x
= event.x;
y
= event.y;
if  (document.body.scrollLeft)
{x = event.x + document.body.scrollLeft; y = event.y + document.body.scrollTop;}
if  (snow) {
dStyle.left 
=  x + offsetx - (width / 2 );
dStyle.top 
=  y + offsety;
}

}



////////////////////////////////////////////////////////////////////////// /

function changeTZ() 
{
   CITY.innerHTML 
=  CLD.TZ.value.substr( 6 )
   setCookie(
" TZ " ,CLD.TZ.selectedIndex)
}



function tick() 
{
   var today
   today 
=   new  Date()
   Clock.innerHTML 
=  today.toLocaleString()
   Clock2.innerHTML 
=  TimeAdd(today.toGMTString(), CLD.TZ.value)
   window.setTimeout(
" tick() " 1000 );
}


function setCookie(name, value) 
{
    var today 
=   new  Date()
    var expires 
=   new  Date()
    expires.setTime(today.getTime() 
+   1000 * 60 * 60 * 24 * 365 )
    document.cookie 
=  name  +   " = "   +  escape(value)     +   " ; expires= "   +  expires.toGMTString()
}


function getCookie(Name) 
{
   var search 
=  Name  +   " = "
   
if (document.cookie.length  >   0 {
      offset 
=  document.cookie.indexOf(search)
      
if (offset  !=   - 1 {
         offset 
+=  search.length
         end 
=  document.cookie.indexOf( " ; " , offset)
         
if (end  ==   - 1 ) end  =  document.cookie.length
         
return  unescape(document.cookie.substring(offset, end))
      }

      
else   return   ""
   }

}


//////////////////////////////////////////////////////// /

function initial() 
{
  
   dStyle 
=  detail.style;
   CLD.SY.selectedIndex
= tY - 1900 ;
   CLD.SM.selectedIndex
= tM;
   drawCld(tY,tM);
   pushBtm(
'' );
   CLD.TZ.selectedIndex
= getCookie( " TZ " );
   changeTZ();
   tick();
}

// -->
</ SCRIPT >

< SCRIPT language = VBScript >
<!--
' ===== 算世界时间
Function TimeAdd(UTC,T)
   Dim PlusMinus, DST, y,tSave
   If Left(T,
1 ) = " - "  Then PlusMinus  =   - 1  Else PlusMinus  =   1
   UTC
= Right(UTC,Len(UTC) - 5 )
   UTC
= Left(UTC,Len(UTC) - 4 )
   y 
=  Year(UTC)
   TimeAdd
= DateAdd( " n " , (Cint(Mid(T, 2 , 2 )) * 60   +  Cint(Mid(T, 4 , 2 )))  *  PlusMinus, UTC)
   
' 美国日光节约期间: 4月第一个星日00:00 至 10月最後一个星期日00:00
   If Mid(T, 6 , 1 ) = " * "  And DateSerial(y, 4 ,( 9   -  Weekday(DateSerial(y, 4 , 1 )) mod  7 ) )  <=  TimeAdd And DateSerial(y, 10 , 31   -  Weekday(DateSerial(y, 10 , 31 )))  >=  TimeAdd Then
      TimeAdd
= CStr(DateAdd( " h " 1 , TimeAdd))  &   " <FONT STYLE='font-size:18pt;font-family:Wingdings; color:red'>R</FONT> "
   Else
   End If
   TimeAdd 
=  CStr(TimeAdd)
End Function
' -->
</ SCRIPT >

< STYLE > .todyaColor  {
    BACKGROUND
- COLOR: aqua
}

</ STYLE >

< META content = " MSHTML 6.00.2800.1505 "  name = GENERATOR ></ HEAD >
< BODY leftMargin = 0  topMargin = 0  onload = initial() >
< SCRIPT language = JavaScript >
<!--
   
if (navigator.appName  ==   " Netscape "   ||  parseInt(navigator.appVersion)  <   4 )
   document.write(
" <h1>你的浏览器无法执行此程序。</h1>此程序在 IE4 以后的版本才能执行!! " )
// -->
</ SCRIPT >

< SCRIPT language = JavaScript >

lck
= 0 ;
function r(hval)
{
if  ( lck  ==   0  )
{
document.bgColor
= hval;
}

}

</ SCRIPT >

< DIV id = detail style = " POSITION: absolute " ></ DIV >
< CENTER >
< FORM name = CLD >
< TABLE >
  
< TBODY >
  
< TR >
    
< TD vAlign = top align = middle >< BR >< FONT style = " FONT-SIZE: 9pt "  
      size
= 2 > 本机时间: </ FONT >< BR >< FONT id = Clock face = Arial color = # 000080  size = 4  
      align
= " center " ></ FONT >
      
< P ><!-- 时区  * 表示自动调整为日光节约时间 -->< FONT style = " FONT-SIZE: 9pt "  size = 2 >< SELECT 
      style
= " FONT-SIZE: 9pt "  onchange = changeTZ() name = TZ >   < OPTION 
        value
= " -1200 安尼威土克、瓜甲兰 "  selected > 国际换日线 < OPTION 
        value
= " -1100 中途岛、萨摩亚群岛 " > 萨摩亚 < OPTION value = " -1000 夏威夷 " > 夏威夷 < OPTION 
        value
=- 0900 * 阿拉斯加 > 阿拉斯加 < OPTION value =- 0800 * 太平洋时间(美加)、提亚纳 > 太平洋 < OPTION 
        value
=- 0700 * 亚历桑那 > 美国山区 < OPTION value =- 0700 * 山区时间(美加) > 美加山区 < OPTION 
        value
=- 0600 * 萨克其万(加拿大) > 加拿大中部 < OPTION value =- 0600 * 墨西哥市、塔克西卡帕 > 墨西哥 < OPTION 
        value
=- 0600 * 中部时间(美加) > 美加中部 < OPTION value =- 0500 * 波哥大、里玛 > 南美洲太平洋 < OPTION 
        value
=- 0500 * 东部时间(美加) > 美加东部 < OPTION value =- 0500 * 印第安纳(东部) > 美东 < OPTION 
        value
=- 0400 * 加拉卡斯、拉帕兹 > 南美洲西部 < OPTION value = " -0400*大西洋时间 加拿大) " > 大西洋 < OPTION 
        value
= " -0330 新岛(加拿大东岸) " > 纽芬兰 < OPTION value = " -0300 波西尼亚 " > 东南美洲 < OPTION 
        value
= " -0300 布鲁诺斯爱丽斯、乔治城 " > 南美洲东部 < OPTION value =- 0200 * 大西洋中部 > 大西洋中部 < OPTION 
        value
=- 0100 * 亚速尔群岛、维德角群岛 > 亚速尔 < OPTION 
        value
= " +0000 格林威治时间、都柏林、爱丁堡、伦敦 " > 英国夏令 < OPTION 
        value
= " +0000 莫洛维亚(赖比瑞亚)、卡萨布兰卡 " > 格林威治标准 < OPTION 
        value
= " +0100 巴黎、马德里 " > 罗马 < OPTION value = " +0100 布拉格, 华沙, 布达佩斯 " > 中欧 < OPTION 
        value
= " +0100 柏林、斯德哥尔摩、罗马、伯恩、布鲁赛尔、维也纳 " > 西欧 < OPTION 
        value
= " +0200 以色列 " > 以色列 < OPTION value =+ 0200 * 东欧 > 东欧 < OPTION 
        value
=+ 0200 * 开罗 > 埃及 < OPTION value =+ 0200 * 雅典、赫尔辛基、伊斯坦堡 > GFT < OPTION 
        value
=+ 0200 * 赫拉雷、皮托里 > 南非 < OPTION 
        value
=+ 0300 * 巴格达、科威特、奈洛比(肯亚)、里雅德(沙乌地) > 沙乌地阿拉伯 < OPTION 
        value
=+ 0300 * 莫斯科、圣彼得堡、贺占、窝瓦格瑞德 > 俄罗斯 < OPTION value =+ 0330 * 德黑兰 > 伊朗 < OPTION 
        value
=+ 0400 * 阿布达比(东阿拉伯)、莫斯凯、塔布理斯(乔治亚共和) > 阿拉伯 < OPTION 
        value
=+ 0430 * 喀布尔 > 阿富汗 < OPTION value = " +0500 伊斯兰马巴德、克洛奇、伊卡特林堡、塔须肯 " > 西亚 < OPTION 
        value
= " +0530 孟买、加尔各答、马垂斯、新德里、可伦坡 " > 印度 < OPTION 
        value
= " +0600 阿马提、达卡 " > 中亚 < OPTION value = " +0700 曼谷、亚加达、胡志明市 " > 曼谷 < OPTION 
        value
= " +0800 北京、重庆、黑龙江 " > 中国 < OPTION 
        value
= " +0900 东京、大阪、扎幌、汉城、亚库兹(东西伯利亚) " > 东京 < OPTION 
        value
= " +0930 达尔文 " > 澳洲中部 < OPTION value = " +1000 布里斯本、墨尔本、席德尼 " > 席德尼 < OPTION 
        value
= " +1000 霍巴特 " > 塔斯梅尼亚 < OPTION value = " +1000 关岛、莫斯比港、海  威 " > 西太平洋 < OPTION 
        value
=+ 1100 * 马哥大、所罗门群岛、新卡伦多尼亚 > 太平洋中部 < OPTION 
        value
= " +1200 威灵顿、奥克兰 " > 纽西兰 < OPTION 
      value
= " +1200 斐济、肯加塔、马歇尔群岛 " > 斐济 </ OPTION >
      
</ SELECT > 时间  </ FONT >< BR >< FONT 
      id
= Clock2 face = Arial color = # 000080  size = 4  align = " center " ></ FONT >< BR >< FONT 
      style
= " FONT-SIZE: 120pt; COLOR: green; FONT-FAMILY: Webdings " >& ucirc; </ FONT >< BR >< FONT 
      id
= CITY 
      style
= " FONT-SIZE: 9pt; WIDTH: 150px; COLOR: blue; FONT-FAMILY: '新细明体' " ></ FONT ></ P >
      
</ TD >
    
< TD align = middle >
      
< DIV style = " Z-INDEX: -1; POSITION: absolute; TOP: 30px " >< FONT id = YMBG 
      style
= " FONT-SIZE: 90pt; COLOR: #f0f0f0; FONT-FAMILY: 'Arial Black' " >& nbsp; 0000 < BR >& nbsp;JUN </ FONT >  
      
</ DIV >
      
< TABLE border = 0 >
        
< TBODY >
        
< TR >
          
< TD bgColor = # 000080  colSpan = 7 >< FONT style = " FONT-SIZE: 9pt "  
            color
= #ffffff size = 2 > 公历 < SELECT style = " FONT-SIZE: 9pt "  
            onchange
= changeCld() name = SY >  
              
< SCRIPT language = JavaScript ><!--
            
for (i = 1900 ;i < 2050 ;i ++ ) document.write( ' <option> ' + i)
            
// --></SCRIPT>
             </ SELECT > < SELECT style = " FONT-SIZE: 9pt "  onchange = changeCld() 
            name
= SM >  
              
< SCRIPT language = JavaScript ><!--
            
for (i = 1 ;i < 13 ;i ++ ) document.write( ' <option> ' + i)
            
// --></SCRIPT>
             </ SELECT > 月  </ FONT >< FONT id = GZ face = 标楷体 color = yellow 
            size
= 3 ></ FONT >< BR ></ TD ></ TR >
        
< TR align = middle bgColor = #e0e0e0 >
          
< TD width = 54 >< FONT color = red > </ FONT ></ TD >
          
< TD width = 54 > </ TD >
          
< TD width = 54 > </ TD >
          
< TD width = 54 > </ TD >
          
< TD width = 54 > </ TD >
          
< TD width = 54 > </ TD >
          
< TD width = 54 >< FONT color = green > </ FONT ></ TD ></ TR >
        
< SCRIPT language = JavaScript ><!--
            var gNum
            
for (i = 0 ;i < 6 ;i ++ {
               document.write(
' <tr align=center> ' )
               
for (j = 0 ;j < 7 ;j ++ {
                  gNum 
=  i * 7 + j
                  document.write(
' <td id="GD '   +  gNum  + ' " onMouseOver="mOvr( '   +  gNum  + ' )" onMouseOut="mOut()"><font id="SD '   +  gNum  + ' " size=5 face="Arial Black" ' )
                  
if (j  ==   0 ) document.write( '  color=red ' )
                  
if (j  ==   6 )
                     
if (i % 2 == 1 ) document.write( '  color=red ' )
                        
else  document.write( '  color=green ' )
                  document.write(
'  TITLE=""> </font><br><font id="LD '   +  gNum  +   ' " size=2 style="font-size:9pt"> </font></td> ' )
               }

               document.write(
' </tr> ' )
            }

            
// --></SCRIPT>
         </ TBODY ></ TABLE ></ TD >
    
< TD vAlign = top align = middle width = 40 >< BR >< BR >< BR >< BR >< BUTTON 
      style
= " FONT-SIZE: 9pt "  onclick = " pushBtm('YU') " > 年↑ </ BUTTON >< BR >< BUTTON 
      style
= " FONT-SIZE: 9pt "  onclick = " pushBtm('YD') " > 年↓ </ BUTTON >  
      
< P >< BUTTON style = " FONT-SIZE: 9pt "  
      onclick
= " pushBtm('MU') " > 月↑ </ BUTTON >< BR >< BUTTON style = " FONT-SIZE: 9pt "  
      onclick
= " pushBtm('MD') " > 月↓ </ BUTTON >  
      
< P >< BUTTON style = " FONT-SIZE: 9pt "  onclick = " pushBtm('') " > 今日 </ BUTTON >  
  
</ P ></ TD ></ TR ></ TBODY ></ TABLE ></ FORM >
< P ></ P >
< HR width = " 90% "  color = #cccccc noShade SIZE = 1 >
< FONT style = " FONT-SIZE: 9pt "  face = ARIAL size = 2 > 阳历中 < FONT 
color
= red > 红色 </ FONT >/< FONT color = green > 绿色 </ FONT >< FONT color = black > 表示节假日,农历中 < FONT 
color
= green > 绿色 </ FONT > 表示为24节气日, < FONT color = red > 红色 </ FONT > 表示为传统节日, < FONT 
color
= blue > 蓝色 </ FONT > 则表示为公众节假日 < BR ></ CENTER ></ BODY ></ HTML >