| 1 |
sysadm |
1.1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
| 2 |
|
|
<html>
|
| 3 |
|
|
<head>
|
| 4 |
sysadm |
1.2 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
| 5 |
|
|
<title>枫林在线 - 万年历</title>
|
| 6 |
sysadm |
1.1 |
<link rel="stylesheet" href="css/default.css" type="text/css">
|
| 7 |
|
|
</head>
|
| 8 |
|
|
<SCRIPT language=JScript>
|
| 9 |
|
|
<!--
|
| 10 |
|
|
/*****************************************************************************
|
| 11 |
sysadm |
1.2 |
个人偏好设定
|
| 12 |
sysadm |
1.1 |
*****************************************************************************/
|
| 13 |
|
|
|
| 14 |
sysadm |
1.2 |
var conWeekend = 3; // 星期六颜色显示: 1=黑色, 2=绿色, 3=红色, 4=隔周休
|
| 15 |
sysadm |
1.1 |
|
| 16 |
|
|
|
| 17 |
|
|
/*****************************************************************************
|
| 18 |
sysadm |
1.2 |
日期资料
|
| 19 |
sysadm |
1.1 |
*****************************************************************************/
|
| 20 |
|
|
|
| 21 |
|
|
var lunarInfo=new Array(
|
| 22 |
|
|
0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,
|
| 23 |
|
|
0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,
|
| 24 |
|
|
0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,
|
| 25 |
|
|
0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,
|
| 26 |
|
|
0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,
|
| 27 |
|
|
0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052b0,0x0a9a8,0x0e950,0x06aa0,
|
| 28 |
|
|
0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,
|
| 29 |
|
|
0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,
|
| 30 |
|
|
0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,
|
| 31 |
|
|
0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,
|
| 32 |
|
|
0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,
|
| 33 |
|
|
0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,
|
| 34 |
|
|
0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,
|
| 35 |
|
|
0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,
|
| 36 |
|
|
0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,
|
| 37 |
|
|
0x14b63);
|
| 38 |
|
|
|
| 39 |
|
|
var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
|
| 40 |
sysadm |
1.2 |
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
|
| 41 |
|
|
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
|
| 42 |
|
|
var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
|
| 43 |
|
|
var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
|
| 44 |
sysadm |
1.1 |
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);
|
| 45 |
sysadm |
1.2 |
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
|
| 46 |
|
|
var nStr2 = new Array('初','十','廿','卅','□');
|
| 47 |
sysadm |
1.1 |
var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
|
| 48 |
|
|
|
| 49 |
|
|
var sFtv = new Array(
|
| 50 |
sysadm |
1.2 |
"0101*元旦",
|
| 51 |
|
|
"0214 情人节",
|
| 52 |
|
|
"0308 妇女节",
|
| 53 |
|
|
"0501 劳动节",
|
| 54 |
|
|
"0504 青年节",
|
| 55 |
|
|
"0601 儿童节",
|
| 56 |
|
|
"0701 建党节 香港回归纪念",
|
| 57 |
|
|
"0801 建军节",
|
| 58 |
|
|
"1001*国庆节");
|
| 59 |
sysadm |
1.1 |
|
| 60 |
sysadm |
1.2 |
//农历节日 *表示放假日
|
| 61 |
sysadm |
1.1 |
var lFtv = new Array(
|
| 62 |
sysadm |
1.2 |
"0101*春节",
|
| 63 |
|
|
"0115 元宵节",
|
| 64 |
|
|
"0505 端午节",
|
| 65 |
|
|
"0815 中秋节",
|
| 66 |
|
|
"0909 重阳节",
|
| 67 |
|
|
"1224 小年",
|
| 68 |
|
|
"0100*除夕");
|
| 69 |
sysadm |
1.1 |
|
| 70 |
sysadm |
1.2 |
//某月的第几个星期几。 5,6,7,8 表示到数第 1,2,3,4 个星期几
|
| 71 |
sysadm |
1.1 |
var wFtv = new Array(
|
| 72 |
sysadm |
1.2 |
"0520 母亲节 Mother's Day",
|
| 73 |
|
|
"0630 父亲节 Father's Day",
|
| 74 |
|
|
"1144 感恩节 Thanksgiving Day");
|
| 75 |
sysadm |
1.1 |
|
| 76 |
|
|
|
| 77 |
|
|
|
| 78 |
sysadm |
1.2 |
//世界时间资料
|
| 79 |
sysadm |
1.1 |
var timeData = {
|
| 80 |
sysadm |
1.2 |
"Asia 亚洲": { //----------------------------------------------
|
| 81 |
|
|
"China 中国 ":["+0800","","北京、重庆、乌鲁木齐"],
|
| 82 |
|
|
"Brunei 汶莱 ":["+0800","","斯里巴加万港"],
|
| 83 |
|
|
"Burma 缅甸 ":["+0630","","仰光"],
|
| 84 |
|
|
"Khmer 柬埔寨 ":["+0700","","金边"],
|
| 85 |
|
|
"Hong kong 香港 ":["+0800","","九龙"],
|
| 86 |
|
|
"Indonesian 印尼 ":["+0700","","耶加达"],
|
| 87 |
|
|
"Japan 日本 ":["+0900","","东京、大阪、札幌"],
|
| 88 |
|
|
"Korea 韩国 ":["+0900","","汉城"],
|
| 89 |
|
|
"Laos 寮国 ":["+0700","","永珍"],
|
| 90 |
|
|
"Malaysian 马来西亚":["+0800","","吉隆坡"],
|
| 91 |
|
|
"Mongolia 蒙古 ":["+0800","03L03|09L03","库伦"],
|
| 92 |
|
|
"Philippines 菲律宾 ":["+0800","04F53|10F53","马尼拉"],
|
| 93 |
|
|
"Russia(Anadyr) 俄罗斯 ":["+1300","03L03|10L03","阿那底河"],
|
| 94 |
|
|
"Russia(Kamchatka) 俄罗斯 ":["+1200","03L03|10L03","堪察加半岛"],
|
| 95 |
|
|
"Russia(Magadan) 俄罗斯 ":["+1100","03L03|10L03","马加丹"],
|
| 96 |
|
|
"Russia(Vladivostok)俄罗斯 ":["+1000","03L03|10L03","海参威"],
|
| 97 |
|
|
"Russia(Yakutsk) 俄罗斯 ":["+0900","03L03|10L03","雅库次克"],
|
| 98 |
|
|
"Singapore 新加坡 ":["+0800","","新加坡"],
|
| 99 |
|
|
"China 北京、重庆、乌鲁木齐 ":["+0800","","北京、重庆、乌鲁木齐"],
|
| 100 |
|
|
"Thailand 泰国 ":["+0700","","曼谷"],
|
| 101 |
|
|
"Vietnam 越南 ":["+0700","","河内"]
|
| 102 |
sysadm |
1.1 |
},
|
| 103 |
sysadm |
1.2 |
"ME, India pen. 中东、印度半岛": { //------------------------------------
|
| 104 |
|
|
"Afghanistan 阿富汗 ":["+0430","","喀布尔"],
|
| 105 |
|
|
"Arab Emirates 阿拉伯联合大公国":["+0400","","阿布达比"],
|
| 106 |
|
|
"Bahrain 巴林 ":["+0300","","麦纳玛"],
|
| 107 |
|
|
"Bangladesh 孟加拉 ":["+0600","","达卡"],
|
| 108 |
|
|
"Bhutan 不丹 ":["+0600","","辛布"],
|
| 109 |
|
|
"Cyprus 赛普勒斯":["+0200","","尼古西亚"],
|
| 110 |
|
|
"Georgia 乔治亚 ":["+0500","","第比利斯"],
|
| 111 |
|
|
"India 印度 ":["+0530","","新德里、孟买、加尔各答"],
|
| 112 |
|
|
"Iran 伊朗 ":["+0330","04 13|10 13","德黑兰"],
|
| 113 |
|
|
"Iraq 伊拉克 ":["+0300","04 13|10 13","巴格达"],
|
| 114 |
|
|
"Israel 以色列 ":["+0200","04F53|09F53","耶路撒冷"],
|
| 115 |
|
|
"Jordan 约旦 ":["+0200","","安曼"],
|
| 116 |
|
|
"Kuwait 科威特 ":["+0300","","科威特市"],
|
| 117 |
|
|
"Lebanon 黎巴嫩 ":["+0200","03L03|10L03","贝鲁特"],
|
| 118 |
|
|
"Maldives 马尔地夫":["+0500","","玛律"],
|
| 119 |
|
|
"Nepal 尼泊尔 ":["+0545","","加德满都"],
|
| 120 |
|
|
"Oman 阿曼 ":["+0400","","马斯喀特"],
|
| 121 |
|
|
"Pakistan 巴基斯坦":["+0500","","喀拉蚩、伊斯兰堡"],
|
| 122 |
|
|
"Qatar 卡达 ":["+0300","","杜哈"],
|
| 123 |
|
|
"Saudi Arabia 沙乌地阿拉伯":["+0300","","利雅德"],
|
| 124 |
|
|
"Sri Lanka 斯里兰卡":["+0600","","可伦坡"],
|
| 125 |
|
|
"Syria 叙利亚 ":["+0200","04 13|10 13","大马士革"],
|
| 126 |
|
|
"Tajikistan 塔吉克 ":["+0500","","杜桑贝"],
|
| 127 |
|
|
"Turkey 土耳其 ":["+0200","","伊斯坦堡"],
|
| 128 |
|
|
"Turkmenistan 土库曼 ":["+0500","","阿什哈巴德"],
|
| 129 |
|
|
"Uzbekistan 乌兹别克斯坦":["+0500","","塔什干"],
|
| 130 |
|
|
"Yemen 叶门 ":["+0300","","沙那"]
|
| 131 |
sysadm |
1.1 |
},
|
| 132 |
sysadm |
1.2 |
"North Europe 北欧": { //----------------------------------------------
|
| 133 |
|
|
"Denmark 丹麦":["+0100","04F03|10L03","哥本哈根"],
|
| 134 |
|
|
"Finland 芬兰":["+0200","03L01|10L01","赫尔辛基"],
|
| 135 |
|
|
"Iceland 冰岛":["+0000","","雷克雅未克"],
|
| 136 |
|
|
"Norwegian 挪威":["+0100","","奥斯陆"],
|
| 137 |
|
|
"Sweden 瑞典":["+0100","03L01|10L01","斯德哥尔摩"]
|
| 138 |
sysadm |
1.1 |
},
|
| 139 |
sysadm |
1.2 |
"Eastern Europe 中欧、东欧": { //----------------------------------------
|
| 140 |
|
|
"Armenia 亚美尼亚":["+0400","","叶里温"],
|
| 141 |
|
|
"Austria 奥地利 ":["+0100","03L01|10L01","维也纳"],
|
| 142 |
|
|
"Azerbaijan 亚塞拜然":["+0400","","巴库"],
|
| 143 |
|
|
"Czech 捷克 ":["+0100","","布拉格"],
|
| 144 |
|
|
"Estonia 爱沙尼亚":["+0200","","塔林"],
|
| 145 |
|
|
"Germany 德国 ":["+0100","03L01|10L01","柏林"],
|
| 146 |
|
|
"Hungarian 匈牙利 ":["+0100","","布达佩斯"],
|
| 147 |
|
|
"Kazakhstan(Almaty) 哈萨克 ":["+0600","","Almaty"],
|
| 148 |
|
|
"Kazakhstan(Aqtobe) 哈萨克 ":["+0500","","Aqtobe"],
|
| 149 |
|
|
"Kazakhstan(Aqtau) 哈萨克 ":["+0400","","Aqtau"],
|
| 150 |
|
|
"Kirghizia 吉尔吉斯":["+0500","","比斯凯克"],
|
| 151 |
|
|
"Latvia 拉脱维亚":["+0200","","里加"],
|
| 152 |
|
|
"Lithuania 立陶宛 ":["+0200","","维尔纽斯"],
|
| 153 |
|
|
"Moldova 摩尔多瓦":["+0200","","基希涅夫"],
|
| 154 |
|
|
"Poland 波兰 ":["+0100","","华沙"],
|
| 155 |
|
|
"Rumania 罗马尼亚":["+0200","","布加勒斯特"],
|
| 156 |
|
|
"Russia(Moscow) 俄罗斯 ":["+0300","03L03|10L03","莫斯科"],
|
| 157 |
|
|
"Russia(Volgograd) 俄罗斯 ":["+0300","03L03|10L03","伏尔哥格勒"],
|
| 158 |
|
|
"Slovakia 斯洛伐克":["+0100","","布拉提斯拉瓦"],
|
| 159 |
|
|
"Switzerland 瑞士 ":["+0100","","苏黎世"],
|
| 160 |
|
|
"Ukraine 乌克兰 ":["+0200","","基辅"],
|
| 161 |
|
|
"Ukraine(Simferopol)乌克兰 ":["+0300","","Simferopol"],
|
| 162 |
|
|
"Belarus 白俄罗斯":["+0200","03L03|10L03","明斯克"]
|
| 163 |
sysadm |
1.1 |
},
|
| 164 |
sysadm |
1.2 |
"Western Europe 西欧": { //----------------------------------------------
|
| 165 |
|
|
"Belgium 比利时 ":["+0100","03L01|10L01","布鲁塞尔"],
|
| 166 |
|
|
"France 法国 ":["+0100","03L01|10L01","巴黎"],
|
| 167 |
|
|
"Ireland 爱尔兰 ":["+0000","03L01|10L01","都柏林"],
|
| 168 |
|
|
"Monaco 摩纳哥 ":["+0100","","摩纳哥市"],
|
| 169 |
|
|
"Netherlands 荷兰 ":["+0100","03L01|10L01","阿姆斯特丹"],
|
| 170 |
|
|
"Luxembourg 卢森堡 ":["+0100","03L01|10L01","卢森堡市"],
|
| 171 |
|
|
"United Kingdom 英国 ":["+0000","03L01|10L01","伦敦、爱丁堡"]
|
| 172 |
sysadm |
1.1 |
},
|
| 173 |
sysadm |
1.2 |
"South Europe 南欧": { //------------------------------------------------
|
| 174 |
|
|
"Albania 阿尔巴尼亚":["+0100","","地拉那"],
|
| 175 |
|
|
"Bulgaria 保加利亚":["+0200","","索菲亚"],
|
| 176 |
|
|
"Greece 希腊 ":["+0200","03L01|10L01","雅典"],
|
| 177 |
|
|
"Holy See 教廷 ":["+0100","","梵蒂冈"],
|
| 178 |
|
|
"Italy 义大利 ":["+0100","03L01|10L01","罗马"],
|
| 179 |
|
|
"Malta 马尔他 ":["+0100","","瓦勒他"],
|
| 180 |
|
|
"Portugal 葡萄牙 ":["+0000","03L01|10L01","里斯本"],
|
| 181 |
|
|
"San Marino 圣马利诺":["+0100","","圣马利诺"],
|
| 182 |
|
|
"Span 西班牙 ":["+0100","03L01|10L01","马德里"],
|
| 183 |
|
|
"Slovenia 斯洛维尼亚":["+0100","","卢布尔雅那"],
|
| 184 |
|
|
"Serbia(前南斯拉夫) 塞尔维亚":["+0100","","贝尔格勒"]
|
| 185 |
sysadm |
1.1 |
},
|
| 186 |
sysadm |
1.2 |
"North America 北美洲": { //--------------------------------------------
|
| 187 |
|
|
"Canada(NST) 加拿大":["-0330","04F02|10L02","纽芬兰、St. John's,Goose Bay"],
|
| 188 |
|
|
"Canada(AST) 加拿大":["-0400","04F02|10L02","Pangnirtung, Glace Bay"],
|
| 189 |
|
|
"Canada(EST) 加拿大":["-0500","04F02|10L02","蒙特娄"],
|
| 190 |
|
|
"Canada(CST) 加拿大":["-0600","04F02|10L02","Swift Current, Regina, Rainy River"],
|
| 191 |
|
|
"Canada(MST) 加拿大":["-0700","04F02|10L02","Inuvik, Edmonton, Dawson Creek"],
|
| 192 |
|
|
"Canada(PST) 加拿大":["-0800","04F02|10L02","温哥华"],
|
| 193 |
|
|
"US(Eastern) 美国(东岸)":["-0500","04F02|10L02","纽约"],
|
| 194 |
|
|
"US(Indiana) 美国 ":["-0500","","印第安纳"],
|
| 195 |
|
|
"US(Central) 美国(中部)":["-0600","04F02|10L02","芝加哥"],
|
| 196 |
|
|
"US(Mountain) 美国(山区)":["-0700","04F02|10L02","丹佛"],
|
| 197 |
|
|
"US(Arizona) 美国 ":["-0700","","亚历桑那"],
|
| 198 |
|
|
"US(Pacific) 美国(西岸)":["-0800","04F02|10L02","旧金山、洛杉矶"],
|
| 199 |
|
|
"US(Alaska) 美国 ":["-0900","","朱诺"]
|
| 200 |
sysadm |
1.1 |
},
|
| 201 |
sysadm |
1.2 |
"South America 中南美洲": { //------------------------------------------
|
| 202 |
|
|
"Argentina 阿根廷 ":["-0300","","布宜诺斯艾利斯"],
|
| 203 |
|
|
"Bahamas 巴哈马 ":["-0500","","拿索"],
|
| 204 |
|
|
"Belize 贝里斯 ":["-0600","","贝尔墨邦"],
|
| 205 |
|
|
"Bolivia 玻利维亚":["-0400","","拉巴斯"],
|
| 206 |
|
|
"Brazil(FST) 巴西 ":["-0200","10F03|02L03","Noronha"],
|
| 207 |
|
|
"Brazil(EST) 巴西 ":["-0300","10F03|02L03","里约热内卢、巴西利亚"],
|
| 208 |
|
|
"Brazil(WST) 巴西 ":["-0400","10F03|02L03","Cuiaba"],
|
| 209 |
|
|
"Brazil(AST) 巴西 ":["-0500","10F03|02L03","Porto Acre"],
|
| 210 |
|
|
"Chilean 智利 ":["-0500","10F03|03F03","Hanga Roa"],
|
| 211 |
|
|
"Chilean 智利 ":["-0300","10F03|03F03","圣地牙哥"],
|
| 212 |
|
|
"Colombia 哥伦比亚":["-0500","","波哥大"],
|
| 213 |
|
|
"Costa Rica 哥斯大黎加":["-0600","","圣约瑟"],
|
| 214 |
|
|
"Cuba 古巴 ":["-0500","04 13|10L03","哈瓦那"],
|
| 215 |
|
|
"Dominican 多明尼加":["-0400","","圣多明哥"],
|
| 216 |
|
|
"Ecuador 厄瓜多 ":["-0500","","基多"],
|
| 217 |
|
|
"El Salvador 萨尔瓦多":["-0600","","圣萨尔瓦多"],
|
| 218 |
|
|
"Falklands 福克兰群岛":["-0300","09F03|04F03","史坦利"],
|
| 219 |
|
|
"Guatemala 瓜地马拉":["-0600","","瓜地马拉城"],
|
| 220 |
|
|
"Haiti 海地 ":["-0500","","太子港"],
|
| 221 |
|
|
"Honduras 宏都拉斯":["-0600","","德古斯加巴"],
|
| 222 |
|
|
"Jamaica 牙买加 ":["-0500","","京斯敦"],
|
| 223 |
|
|
"Mexico(首都) 墨西哥 ":["-0600","","墨西哥城"],
|
| 224 |
|
|
"Mexico(Mazatlan) 墨西哥 ":["-0700","","Mazatlan"],
|
| 225 |
|
|
"Mexico(蒂娃娜) 墨西哥 ":["-0800","","蒂娃娜"],
|
| 226 |
|
|
"Nicaragua 尼加拉瓜":["-0500","","马纳瓜"],
|
| 227 |
|
|
"Panama 巴拿马 ":["-0500","","巴拿马市"],
|
| 228 |
|
|
"Paraguay 巴拉圭 ":["-0300","10F03|02L03","亚松森"],
|
| 229 |
|
|
"Peru 秘鲁 ":["-0500","","利马"],
|
| 230 |
|
|
"Trinidad & Tobago 千里达及托巴哥":["-0400","","西班牙港"],
|
| 231 |
|
|
"Uruguay 乌拉圭 ":["-0300","","蒙特维多"],
|
| 232 |
|
|
"Venezuela 委内瑞拉":["-0400","","卡拉卡斯"]
|
| 233 |
sysadm |
1.1 |
},
|
| 234 |
sysadm |
1.2 |
"Africa 非洲": { //----------------------------------------------
|
| 235 |
|
|
"Algeria 阿尔及利亚":["+0100","","阿尔及尔"],
|
| 236 |
|
|
"Angola 安哥拉 ":["+0100","","鲁安达"],
|
| 237 |
|
|
"Benin 贝南 ":["+0100","","新港"],
|
| 238 |
|
|
"Botswana 波札那 ":["+0200","","嘉伯隆里"],
|
| 239 |
|
|
"Burundi 蒲隆地 ":["+0200","","布松布拉"],
|
| 240 |
|
|
"Cameroon 喀麦隆 ":["+0100","","雅恩德"],
|
| 241 |
|
|
"Cape Verde 维德角 ":["-0100","","培亚"],
|
| 242 |
|
|
"Central African 中非共和国":["+0100","","班基"],
|
| 243 |
|
|
"Chad 查德 ":["+0100","","恩加美纳"],
|
| 244 |
|
|
"Congo 刚果 ":["+0100","","布拉萨市"],
|
| 245 |
|
|
"Djibouti 吉布地 ":["+0300","","吉布地"],
|
| 246 |
|
|
"Egypt 埃及 ":["+0200","04L53|09L43","开罗"],
|
| 247 |
|
|
"Equatorial Guinea 赤道几内亚":["+0100","","马拉博"],
|
| 248 |
|
|
"Ethiopia 衣索比亚":["+0300","","阿迪斯阿贝巴"],
|
| 249 |
|
|
"Gabon 加彭 ":["+0100","","自由市"],
|
| 250 |
|
|
"Gambia 甘比亚 ":["+0000","","班竹"],
|
| 251 |
|
|
"Ghana 迦纳 ":["+0000","","阿克拉"],
|
| 252 |
|
|
"Guinea 几内亚 ":["+0000","","柯那克里"],
|
| 253 |
|
|
"Ivory Coast 象牙海岸":["+0000","","雅穆索戈"],
|
| 254 |
|
|
"Kenya 肯亚 ":["+0300","","奈洛比"],
|
| 255 |
|
|
"Lesotho 赖索托 ":["+0200","","马赛鲁"],
|
| 256 |
|
|
"Liberia 赖比瑞亚":["+0000","","蒙罗维亚"],
|
| 257 |
|
|
"Madagascar 马达加斯加":["+0300","","安塔那那利佛"],
|
| 258 |
|
|
"Malawi 马拉威 ":["+0200","","里朗威"],
|
| 259 |
|
|
"Mali 马利 ":["+0000","","巴马科"],
|
| 260 |
|
|
"Mauritania 茅利塔尼亚":["+0000","","诺克少"],
|
| 261 |
|
|
"Mauritius 模里西斯":["+0400","","路易士港"],
|
| 262 |
|
|
"Morocco 摩洛哥 ":["+0000","","卡萨布兰卡"],
|
| 263 |
|
|
"Mozambique 莫三比克":["+0200","","马布多"],
|
| 264 |
|
|
"Namibia 纳米比亚":["+0200","09F03|04F03","温吐克"],
|
| 265 |
|
|
"Niger 尼日 ":["+0100","","尼阿美"],
|
| 266 |
|
|
"Nigeria 奈及利亚":["+0100","","阿布札"],
|
| 267 |
|
|
"Rwanda 卢安达 ":["+0200","","吉佳利"],
|
| 268 |
|
|
"Sao Tome 圣多美 ":["+0000","","圣多美"],
|
| 269 |
|
|
"Senegal 塞内加尔":["+0000","","达卡"],
|
| 270 |
|
|
"Sierra Leone 狮子山国":["+0000","","自由城"],
|
| 271 |
|
|
"Somalia 索马利亚":["+0300","","摩加迪休"],
|
| 272 |
|
|
"South Africa 南非 ":["+0200","","普利托里亚"],
|
| 273 |
|
|
"Sudan 苏丹 ":["+0200","","卡土穆"],
|
| 274 |
|
|
"Tanzania 坦尚尼亚":["+0300","","杜笃玛"],
|
| 275 |
|
|
"Togo 多哥 ":["+0000","","洛梅"],
|
| 276 |
|
|
"Tunisia 突尼西亚":["+0100","","突尼斯"],
|
| 277 |
|
|
"Uganda 乌干达 ":["+0300","","坎帕拉"],
|
| 278 |
|
|
"Zaire 萨伊 ":["+0100","","金夏沙"],
|
| 279 |
|
|
"Zambia 尚比亚 ":["+0200","","路沙卡"],
|
| 280 |
|
|
"Zimbabwe 辛巴威 ":["+0200","","哈拉雷"]
|
| 281 |
sysadm |
1.1 |
},
|
| 282 |
sysadm |
1.2 |
"Oceania 大洋洲": { //----------------------------------------------
|
| 283 |
|
|
"Aus.(Adelaide) 澳大利亚 ":["+0930","10L03|03L03","阿德莱德"],
|
| 284 |
|
|
"Aus.(Brisbane) 澳大利亚 ":["+1000","10L03|03L03","布利斯班"],
|
| 285 |
|
|
"Aus.(Darwin) 澳大利亚 ":["+0930","10L03|03L03","达尔文"],
|
| 286 |
|
|
"Aus.(Hobart) 澳大利亚 ":["+1000","10L03|03L03","荷伯特"],
|
| 287 |
|
|
"Aus.(Perth) 澳大利亚 ":["+0800","10L03|03L03","伯斯"],
|
| 288 |
|
|
"Aus.(Sydney) 澳大利亚 ":["+1000","10L03|03L03","雪梨"],
|
| 289 |
|
|
"Eniwetok 安尼威托克岛":["-1200","","安尼威托克岛"],
|
| 290 |
|
|
"Fiji 斐济 ":["+1200","11F03|02L03","苏瓦"],
|
| 291 |
|
|
"Guam 关岛 ":["+1000","","阿加纳"],
|
| 292 |
|
|
"Hawaii(US) 夏威夷(美)":["-1000","","檀香山"],
|
| 293 |
|
|
//"Mariana Islands 塞班岛 ":["","","塞班岛"],
|
| 294 |
|
|
"Marshall Is. 马绍尔群岛":["+1200","","Majuro"],
|
| 295 |
|
|
"Midway Is.(US) 中途岛(美)":["-1100","","中途岛"],
|
| 296 |
|
|
"Nauru Rep. 诺鲁共和国":["+1200","","雅连"],
|
| 297 |
|
|
"New Calednia 新克里多尼亚":["+1100","","Noumea"],
|
| 298 |
|
|
"New Guined 新畿内亚 ":["+1000","","莫勒斯比港"],
|
| 299 |
|
|
"New Zealand 纽西兰 ":["+1300","10F03|04F63","奥克兰"],
|
| 300 |
|
|
"New Zealand(CHADT) 纽西兰 ":["+1345","10F03|04F63","Waitaing"],
|
| 301 |
|
|
"Solomon Is. 索罗门群岛":["+1100","","荷尼阿拉"],
|
| 302 |
|
|
"Tahiti 大溪地 ":["-1000","","大溪地"],
|
| 303 |
|
|
"Tonga 东加 ":["+1300","10F63|04F63","努瓜娄发"],
|
| 304 |
|
|
"Tuvalu 吐瓦鲁 ":["+1200","","富那富提"],
|
| 305 |
|
|
"Western Samoa 西萨摩亚 ":["-1100","","阿庇亚"],
|
| 306 |
|
|
"国际换日线 ":["-1200","","国际换日线"]
|
| 307 |
sysadm |
1.1 |
}
|
| 308 |
|
|
};
|
| 309 |
|
|
|
| 310 |
|
|
|
| 311 |
|
|
|
| 312 |
|
|
/*****************************************************************************
|
| 313 |
sysadm |
1.2 |
日期计算
|
| 314 |
sysadm |
1.1 |
*****************************************************************************/
|
| 315 |
|
|
|
| 316 |
sysadm |
1.2 |
//====================================== 传回农历 y年的总天数
|
| 317 |
sysadm |
1.1 |
function lYearDays(y) {
|
| 318 |
|
|
var i, sum = 348;
|
| 319 |
|
|
for(i=0x8000; i>0x8; i>>=1) sum += (lunarInfo[y-1900] & i)? 1: 0;
|
| 320 |
|
|
return(sum+leapDays(y));
|
| 321 |
|
|
}
|
| 322 |
|
|
|
| 323 |
sysadm |
1.2 |
//====================================== 传回农历 y年闰月的天数
|
| 324 |
sysadm |
1.1 |
function leapDays(y) {
|
| 325 |
|
|
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29);
|
| 326 |
|
|
else return(0);
|
| 327 |
|
|
}
|
| 328 |
|
|
|
| 329 |
sysadm |
1.2 |
//====================================== 传回农历 y年闰哪个月 1-12 , 没闰传回 0
|
| 330 |
sysadm |
1.1 |
function leapMonth(y) {
|
| 331 |
|
|
return(lunarInfo[y-1900] & 0xf);
|
| 332 |
|
|
}
|
| 333 |
|
|
|
| 334 |
sysadm |
1.2 |
//====================================== 传回农历 y年m月的总天数
|
| 335 |
sysadm |
1.1 |
function monthDays(y,m) {
|
| 336 |
|
|
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
|
| 337 |
|
|
}
|
| 338 |
|
|
|
| 339 |
|
|
|
| 340 |
sysadm |
1.2 |
//====================================== 算出农历, 传入日期物件, 传回农历日期物件
|
| 341 |
|
|
// 该物件属性有 .year .month .day .isLeap
|
| 342 |
sysadm |
1.1 |
function Lunar(objDate) {
|
| 343 |
|
|
|
| 344 |
|
|
var i, leap=0, temp=0;
|
| 345 |
|
|
var offset = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate()) - Date.UTC(1900,0,31))/86400000;
|
| 346 |
|
|
|
| 347 |
|
|
for(i=1900; i<2050 && offset>0; i++) { temp=lYearDays(i); offset-=temp; }
|
| 348 |
|
|
|
| 349 |
|
|
if(offset<0) { offset+=temp; i--; }
|
| 350 |
|
|
|
| 351 |
|
|
this.year = i;
|
| 352 |
|
|
|
| 353 |
sysadm |
1.2 |
leap = leapMonth(i); //闰哪个月
|
| 354 |
sysadm |
1.1 |
this.isLeap = false;
|
| 355 |
|
|
|
| 356 |
|
|
for(i=1; i<13 && offset>0; i++) {
|
| 357 |
sysadm |
1.2 |
//闰月
|
| 358 |
sysadm |
1.1 |
if(leap>0 && i==(leap+1) && this.isLeap==false)
|
| 359 |
|
|
{ --i; this.isLeap = true; temp = leapDays(this.year); }
|
| 360 |
|
|
else
|
| 361 |
|
|
{ temp = monthDays(this.year, i); }
|
| 362 |
|
|
|
| 363 |
sysadm |
1.2 |
//解除闰月
|
| 364 |
sysadm |
1.1 |
if(this.isLeap==true && i==(leap+1)) this.isLeap = false;
|
| 365 |
|
|
|
| 366 |
|
|
offset -= temp;
|
| 367 |
|
|
}
|
| 368 |
|
|
|
| 369 |
|
|
if(offset==0 && leap>0 && i==leap+1)
|
| 370 |
|
|
if(this.isLeap)
|
| 371 |
|
|
{ this.isLeap = false; }
|
| 372 |
|
|
else
|
| 373 |
|
|
{ this.isLeap = true; --i; }
|
| 374 |
|
|
|
| 375 |
|
|
if(offset<0){ offset += temp; --i; }
|
| 376 |
|
|
|
| 377 |
|
|
this.month = i;
|
| 378 |
|
|
this.day = offset + 1;
|
| 379 |
|
|
}
|
| 380 |
|
|
|
| 381 |
sysadm |
1.2 |
//==============================传回国历 y年某m+1月的天数
|
| 382 |
sysadm |
1.1 |
function solarDays(y,m) {
|
| 383 |
|
|
if(m==1)
|
| 384 |
|
|
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
|
| 385 |
|
|
else
|
| 386 |
|
|
return(solarMonth[m]);
|
| 387 |
|
|
}
|
| 388 |
sysadm |
1.2 |
//============================== 传入 offset 传回干支, 0=甲子
|
| 389 |
sysadm |
1.1 |
function cyclical(num) {
|
| 390 |
|
|
return(Gan[num%10]+Zhi[num%12]);
|
| 391 |
|
|
}
|
| 392 |
|
|
|
| 393 |
sysadm |
1.2 |
//============================== 月历属性
|
| 394 |
sysadm |
1.1 |
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {
|
| 395 |
|
|
|
| 396 |
|
|
this.isToday = false;
|
| 397 |
sysadm |
1.2 |
//国历
|
| 398 |
|
|
this.sYear = sYear; //西元年4位数字
|
| 399 |
|
|
this.sMonth = sMonth; //西元月数字
|
| 400 |
|
|
this.sDay = sDay; //西元日数字
|
| 401 |
|
|
this.week = week; //星期, 1个中文
|
| 402 |
|
|
//农历
|
| 403 |
|
|
this.lYear = lYear; //西元年4位数字
|
| 404 |
|
|
this.lMonth = lMonth; //农历月数字
|
| 405 |
|
|
this.lDay = lDay; //农历日数字
|
| 406 |
|
|
this.isLeap = isLeap; //是否为农历闰月?
|
| 407 |
|
|
//八字
|
| 408 |
|
|
this.cYear = cYear; //年柱, 2个中文
|
| 409 |
|
|
this.cMonth = cMonth; //月柱, 2个中文
|
| 410 |
|
|
this.cDay = cDay; //日柱, 2个中文
|
| 411 |
sysadm |
1.1 |
|
| 412 |
|
|
this.color = '';
|
| 413 |
|
|
|
| 414 |
sysadm |
1.2 |
this.lunarFestival = ''; //农历节日
|
| 415 |
|
|
this.solarFestival = ''; //国历节日
|
| 416 |
|
|
this.solarTerms = ''; //节气
|
| 417 |
sysadm |
1.1 |
}
|
| 418 |
|
|
|
| 419 |
sysadm |
1.2 |
//===== 某年的第n个节气为几日(从0小寒起算)
|
| 420 |
sysadm |
1.1 |
function sTerm(y,n) {
|
| 421 |
|
|
var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) );
|
| 422 |
|
|
return(offDate.getUTCDate());
|
| 423 |
|
|
}
|
| 424 |
|
|
|
| 425 |
|
|
|
| 426 |
|
|
|
| 427 |
|
|
|
| 428 |
sysadm |
1.2 |
//============================== 传回月历物件 (y年,m+1月)
|
| 429 |
sysadm |
1.1 |
/*
|
| 430 |
sysadm |
1.2 |
功能说明: 传回整个月的日期资料物件
|
| 431 |
sysadm |
1.1 |
|
| 432 |
sysadm |
1.2 |
使用方式: OBJ = new calendar(年,零起算月);
|
| 433 |
sysadm |
1.1 |
|
| 434 |
sysadm |
1.2 |
OBJ.length 传回当月最大日
|
| 435 |
|
|
OBJ.firstWeek 传回当月一日星期
|
| 436 |
sysadm |
1.1 |
|
| 437 |
sysadm |
1.2 |
由 OBJ[日期].属性名称 即可取得各项值
|
| 438 |
sysadm |
1.1 |
|
| 439 |
sysadm |
1.2 |
OBJ[日期].isToday 传回是否为今日 true 或 false
|
| 440 |
sysadm |
1.1 |
|
| 441 |
sysadm |
1.2 |
其他 OBJ[日期] 属性参见 calElement() 中的注解
|
| 442 |
sysadm |
1.1 |
*/
|
| 443 |
|
|
function calendar(y,m) {
|
| 444 |
|
|
|
| 445 |
|
|
var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3;
|
| 446 |
sysadm |
1.2 |
var cY, cM, cD; //年柱,月柱,日柱
|
| 447 |
sysadm |
1.1 |
var lDPOS = new Array(3);
|
| 448 |
|
|
var n = 0;
|
| 449 |
|
|
var firstLM = 0;
|
| 450 |
|
|
|
| 451 |
sysadm |
1.2 |
sDObj = new Date(y,m,1,0,0,0,0); //当月一日日期
|
| 452 |
sysadm |
1.1 |
|
| 453 |
sysadm |
1.2 |
this.length = solarDays(y,m); //国历当月天数
|
| 454 |
|
|
this.firstWeek = sDObj.getDay(); //国历当月1日星期几
|
| 455 |
sysadm |
1.1 |
|
| 456 |
sysadm |
1.2 |
////////年柱 1900年春分后为庚子年(60进制36)
|
| 457 |
sysadm |
1.1 |
if(m<2) cY=cyclical(y-1900+36-1);
|
| 458 |
|
|
else cY=cyclical(y-1900+36);
|
| 459 |
sysadm |
1.2 |
var term2=sTerm(y,2); //立春日期
|
| 460 |
sysadm |
1.1 |
|
| 461 |
sysadm |
1.2 |
////////月柱 1900年1月小寒以前为 丙子月(60进制12)
|
| 462 |
|
|
var firstNode = sTerm(y,m*2) //传回当月「节」为几日开始
|
| 463 |
sysadm |
1.1 |
cM = cyclical((y-1900)*12+m+12);
|
| 464 |
|
|
|
| 465 |
sysadm |
1.2 |
//当月一日与 1900/1/1 相差天数
|
| 466 |
|
|
//1900/1/1与 1970/1/1 相差25567日, 1900/1/1 日柱为甲戌日(60进制10)
|
| 467 |
sysadm |
1.1 |
var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;
|
| 468 |
|
|
|
| 469 |
|
|
for(var i=0;i<this.length;i++) {
|
| 470 |
|
|
|
| 471 |
|
|
if(lD>lX) {
|
| 472 |
sysadm |
1.2 |
sDObj = new Date(y,m,i+1); //当月一日日期
|
| 473 |
|
|
lDObj = new Lunar(sDObj); //农历
|
| 474 |
|
|
lY = lDObj.year; //农历年
|
| 475 |
|
|
lM = lDObj.month; //农历月
|
| 476 |
|
|
lD = lDObj.day; //农历日
|
| 477 |
|
|
lL = lDObj.isLeap; //农历是否闰月
|
| 478 |
|
|
lX = lL? leapDays(lY): monthDays(lY,lM); //农历当月最后一天
|
| 479 |
sysadm |
1.1 |
|
| 480 |
|
|
if(n==0) firstLM = lM;
|
| 481 |
|
|
lDPOS[n++] = i-lD+1;
|
| 482 |
|
|
}
|
| 483 |
|
|
|
| 484 |
sysadm |
1.2 |
//依节气调整二月分的年柱, 以春分为界
|
| 485 |
sysadm |
1.1 |
if(m==1 && (i+1)==term2) cY=cyclical(y-1900+36);
|
| 486 |
sysadm |
1.2 |
//依节气月柱, 以「节」为界
|
| 487 |
sysadm |
1.1 |
if((i+1)==firstNode) cM = cyclical((y-1900)*12+m+13);
|
| 488 |
sysadm |
1.2 |
//日柱
|
| 489 |
sysadm |
1.1 |
cD = cyclical(dayCyclical+i);
|
| 490 |
|
|
|
| 491 |
|
|
//sYear,sMonth,sDay,week,
|
| 492 |
|
|
//lYear,lMonth,lDay,isLeap,
|
| 493 |
|
|
//cYear,cMonth,cDay
|
| 494 |
|
|
this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
|
| 495 |
|
|
lY, lM, lD++, lL,
|
| 496 |
|
|
cY ,cM, cD );
|
| 497 |
|
|
|
| 498 |
|
|
|
| 499 |
|
|
|
| 500 |
|
|
}
|
| 501 |
|
|
|
| 502 |
|
|
|
| 503 |
sysadm |
1.2 |
//节气
|
| 504 |
sysadm |
1.1 |
tmp1=sTerm(y,m*2 )-1;
|
| 505 |
|
|
tmp2=sTerm(y,m*2+1)-1;
|
| 506 |
|
|
this[tmp1].solarTerms = solarTerm[m*2];
|
| 507 |
|
|
this[tmp2].solarTerms = solarTerm[m*2+1];
|
| 508 |
sysadm |
1.2 |
if(m==3) this[tmp1].color = 'red'; //清明颜色
|
| 509 |
sysadm |
1.1 |
|
| 510 |
sysadm |
1.2 |
//国历节日
|
| 511 |
sysadm |
1.1 |
for(i in sFtv)
|
| 512 |
|
|
if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
|
| 513 |
|
|
if(Number(RegExp.$1)==(m+1)) {
|
| 514 |
|
|
this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' ';
|
| 515 |
|
|
if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red';
|
| 516 |
|
|
}
|
| 517 |
|
|
|
| 518 |
sysadm |
1.2 |
//月周节日
|
| 519 |
sysadm |
1.1 |
for(i in wFtv)
|
| 520 |
|
|
if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
|
| 521 |
|
|
if(Number(RegExp.$1)==(m+1)) {
|
| 522 |
|
|
tmp1=Number(RegExp.$2);
|
| 523 |
|
|
tmp2=Number(RegExp.$3);
|
| 524 |
|
|
if(tmp1<5)
|
| 525 |
|
|
this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' ';
|
| 526 |
|
|
else {
|
| 527 |
|
|
tmp1 -= 5;
|
| 528 |
sysadm |
1.2 |
tmp3 = (this.firstWeek+this.length-1)%7; //当月最后一天星期?
|
| 529 |
sysadm |
1.1 |
this[this.length - tmp3 - 7*tmp1 + tmp2 - (tmp2>tmp3?7:0) - 1 ].solarFestival += RegExp.$5 + ' ';
|
| 530 |
|
|
}
|
| 531 |
|
|
}
|
| 532 |
|
|
|
| 533 |
sysadm |
1.2 |
//农历节日
|
| 534 |
sysadm |
1.1 |
for(i in lFtv)
|
| 535 |
|
|
if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
|
| 536 |
|
|
tmp1=Number(RegExp.$1)-firstLM;
|
| 537 |
|
|
if(tmp1==-11) tmp1=1;
|
| 538 |
|
|
if(tmp1 >=0 && tmp1<n) {
|
| 539 |
|
|
tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1;
|
| 540 |
|
|
if( tmp2 >= 0 && tmp2<this.length && this[tmp2].isLeap!=true) {
|
| 541 |
|
|
this[tmp2].lunarFestival += RegExp.$4 + ' ';
|
| 542 |
|
|
if(RegExp.$3=='*') this[tmp2].color = 'red';
|
| 543 |
|
|
}
|
| 544 |
|
|
}
|
| 545 |
|
|
}
|
| 546 |
|
|
|
| 547 |
|
|
|
| 548 |
sysadm |
1.2 |
//复活节只出现在3或4月
|
| 549 |
sysadm |
1.1 |
if(m==2 || m==3) {
|
| 550 |
|
|
var estDay = new easter(y);
|
| 551 |
|
|
if(m == estDay.m)
|
| 552 |
sysadm |
1.2 |
this[estDay.d-1].solarFestival = this[estDay.d-1].solarFestival+' 复活节 Easter Sunday';
|
| 553 |
sysadm |
1.1 |
}
|
| 554 |
|
|
|
| 555 |
|
|
|
| 556 |
|
|
//if(m==2) this[20].solarFestival = this[20].solarFestival+unescape('%20%u6D35%u8CE2%u751F%u65E5');
|
| 557 |
|
|
|
| 558 |
sysadm |
1.2 |
//黑色星期五
|
| 559 |
sysadm |
1.1 |
if((this.firstWeek+12)%7==5)
|
| 560 |
sysadm |
1.2 |
this[12].solarFestival += '黑色星期五 ';
|
| 561 |
sysadm |
1.1 |
|
| 562 |
sysadm |
1.2 |
//今日
|
| 563 |
sysadm |
1.1 |
if(y==tY && m==tM) this[tD-1].isToday = true;
|
| 564 |
|
|
}
|
| 565 |
|
|
|
| 566 |
sysadm |
1.2 |
//======================================= 传回该年的复活节(春分后第一次满月周后的第一主日)
|
| 567 |
sysadm |
1.1 |
function easter(y) {
|
| 568 |
|
|
|
| 569 |
sysadm |
1.2 |
var term2=sTerm(y,5); //取得春分日期
|
| 570 |
|
|
var dayTerm2 = new Date(Date.UTC(y,2,term2,0,0,0,0)); //取得春分的国历日期物件(春分一定出现在3月)
|
| 571 |
|
|
var lDayTerm2 = new Lunar(dayTerm2); //取得取得春分农历
|
| 572 |
sysadm |
1.1 |
|
| 573 |
sysadm |
1.2 |
if(lDayTerm2.day<15) //取得下个月圆的相差天数
|
| 574 |
sysadm |
1.1 |
var lMlen= 15-lDayTerm2.day;
|
| 575 |
|
|
else
|
| 576 |
|
|
var lMlen= (lDayTerm2.isLeap? leapDays(y): monthDays(y,lDayTerm2.month)) - lDayTerm2.day + 15;
|
| 577 |
|
|
|
| 578 |
sysadm |
1.2 |
//一天等于 1000*60*60*24 = 86400000 毫秒
|
| 579 |
|
|
var l15 = new Date(dayTerm2.getTime() + 86400000*lMlen ); //求出第一次月圆为国历几日
|
| 580 |
|
|
var dayEaster = new Date(l15.getTime() + 86400000*( 7-l15.getUTCDay() ) ); //求出下个周日
|
| 581 |
sysadm |
1.1 |
|
| 582 |
|
|
this.m = dayEaster.getUTCMonth();
|
| 583 |
|
|
this.d = dayEaster.getUTCDate();
|
| 584 |
|
|
|
| 585 |
|
|
}
|
| 586 |
|
|
|
| 587 |
sysadm |
1.2 |
//====================== 中文日期
|
| 588 |
sysadm |
1.1 |
function cDay(d){
|
| 589 |
|
|
var s;
|
| 590 |
|
|
|
| 591 |
|
|
switch (d) {
|
| 592 |
|
|
case 10:
|
| 593 |
sysadm |
1.2 |
s = '初十'; break;
|
| 594 |
sysadm |
1.1 |
case 20:
|
| 595 |
sysadm |
1.2 |
s = '二十'; break;
|
| 596 |
sysadm |
1.1 |
break;
|
| 597 |
|
|
case 30:
|
| 598 |
sysadm |
1.2 |
s = '三十'; break;
|
| 599 |
sysadm |
1.1 |
break;
|
| 600 |
|
|
default :
|
| 601 |
|
|
s = nStr2[Math.floor(d/10)];
|
| 602 |
|
|
s += nStr1[d%10];
|
| 603 |
|
|
}
|
| 604 |
|
|
return(s);
|
| 605 |
|
|
}
|
| 606 |
|
|
|
| 607 |
|
|
///////////////////////////////////////////////////////////////////////////////
|
| 608 |
|
|
|
| 609 |
|
|
var cld;
|
| 610 |
|
|
|
| 611 |
|
|
function drawCld(SY,SM) {
|
| 612 |
|
|
var i,sD,s,size;
|
| 613 |
|
|
cld = new calendar(SY,SM);
|
| 614 |
|
|
|
| 615 |
sysadm |
1.2 |
if(SY>1874 && SY<1909) yDisplay = '光绪' + (((SY-1874)==1)?'元':SY-1874);
|
| 616 |
|
|
if(SY>1908 && SY<1912) yDisplay = '宣统' + (((SY-1908)==1)?'元':SY-1908);
|
| 617 |
|
|
if(SY>1949) yDisplay = '共和国' + (((SY-1949)==1)?'元':SY-1949);
|
| 618 |
sysadm |
1.1 |
|
| 619 |
sysadm |
1.2 |
GZ.innerHTML = yDisplay +'年 农历' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';
|
| 620 |
sysadm |
1.1 |
|
| 621 |
|
|
YMBG.innerHTML = " " + SY + "<BR> " + monthName[SM];
|
| 622 |
|
|
|
| 623 |
|
|
for(i=0;i<42;i++) {
|
| 624 |
|
|
|
| 625 |
|
|
sObj=eval('SD'+ i);
|
| 626 |
|
|
lObj=eval('LD'+ i);
|
| 627 |
|
|
|
| 628 |
|
|
sObj.className = '';
|
| 629 |
|
|
|
| 630 |
|
|
sD = i - cld.firstWeek;
|
| 631 |
|
|
|
| 632 |
sysadm |
1.2 |
if(sD>-1 && sD<cld.length) { //日期内
|
| 633 |
sysadm |
1.1 |
sObj.innerHTML = sD+1;
|
| 634 |
|
|
|
| 635 |
sysadm |
1.2 |
if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日颜色
|
| 636 |
sysadm |
1.1 |
|
| 637 |
sysadm |
1.2 |
sObj.style.color = cld[sD].color; //国定假日颜色
|
| 638 |
sysadm |
1.1 |
|
| 639 |
sysadm |
1.2 |
if(cld[sD].lDay==1) //显示农历月
|
| 640 |
|
|
lObj.innerHTML = '<b>'+(cld[sD].isLeap?'闰':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
|
| 641 |
|
|
else //显示农历日
|
| 642 |
sysadm |
1.1 |
lObj.innerHTML = cDay(cld[sD].lDay);
|
| 643 |
|
|
|
| 644 |
|
|
s=cld[sD].lunarFestival;
|
| 645 |
sysadm |
1.2 |
if(s.length>0) { //农历节日
|
| 646 |
sysadm |
1.1 |
if(s.length>6) s = s.substr(0, 4)+'...';
|
| 647 |
|
|
s = s.fontcolor('red');
|
| 648 |
|
|
}
|
| 649 |
sysadm |
1.2 |
else { //国历节日
|
| 650 |
sysadm |
1.1 |
s=cld[sD].solarFestival;
|
| 651 |
|
|
if(s.length>0) {
|
| 652 |
|
|
size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
|
| 653 |
|
|
if(s.length>size+2) s = s.substr(0, size)+'...';
|
| 654 |
|
|
s = s.fontcolor('blue');
|
| 655 |
|
|
}
|
| 656 |
sysadm |
1.2 |
else { //廿四节气
|
| 657 |
sysadm |
1.1 |
s=cld[sD].solarTerms;
|
| 658 |
|
|
if(s.length>0) s = s.fontcolor('limegreen');
|
| 659 |
|
|
}
|
| 660 |
|
|
}
|
| 661 |
|
|
if(s.length>0) lObj.innerHTML = s;
|
| 662 |
|
|
|
| 663 |
|
|
}
|
| 664 |
sysadm |
1.2 |
else { //非日期
|
| 665 |
sysadm |
1.1 |
sObj.innerHTML = '';
|
| 666 |
|
|
lObj.innerHTML = '';
|
| 667 |
|
|
}
|
| 668 |
|
|
}
|
| 669 |
|
|
}
|
| 670 |
|
|
|
| 671 |
|
|
|
| 672 |
|
|
function changeCld() {
|
| 673 |
|
|
var y,m;
|
| 674 |
|
|
y=CLD.SY.selectedIndex+1900;
|
| 675 |
|
|
m=CLD.SM.selectedIndex;
|
| 676 |
|
|
drawCld(y,m);
|
| 677 |
|
|
}
|
| 678 |
|
|
|
| 679 |
|
|
function pushBtm(K) {
|
| 680 |
|
|
switch (K){
|
| 681 |
|
|
case 'YU' :
|
| 682 |
|
|
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
|
| 683 |
|
|
break;
|
| 684 |
|
|
case 'YD' :
|
| 685 |
|
|
if(CLD.SY.selectedIndex<150) CLD.SY.selectedIndex++;
|
| 686 |
|
|
break;
|
| 687 |
|
|
case 'MU' :
|
| 688 |
|
|
if(CLD.SM.selectedIndex>0) {
|
| 689 |
|
|
CLD.SM.selectedIndex--;
|
| 690 |
|
|
}
|
| 691 |
|
|
else {
|
| 692 |
|
|
CLD.SM.selectedIndex=11;
|
| 693 |
|
|
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
|
| 694 |
|
|
}
|
| 695 |
|
|
break;
|
| 696 |
|
|
case 'MD' :
|
| 697 |
|
|
if(CLD.SM.selectedIndex<11) {
|
| 698 |
|
|
CLD.SM.selectedIndex++;
|
| 699 |
|
|
}
|
| 700 |
|
|
else {
|
| 701 |
|
|
CLD.SM.selectedIndex=0;
|
| 702 |
|
|
if(CLD.SY.selectedIndex<150) CLD.SY.selectedIndex++;
|
| 703 |
|
|
}
|
| 704 |
|
|
break;
|
| 705 |
|
|
default :
|
| 706 |
|
|
CLD.SY.selectedIndex=tY-1900;
|
| 707 |
|
|
CLD.SM.selectedIndex=tM;
|
| 708 |
|
|
}
|
| 709 |
|
|
changeCld();
|
| 710 |
|
|
}
|
| 711 |
|
|
|
| 712 |
|
|
var Today = new Date();
|
| 713 |
|
|
var tY = Today.getFullYear();
|
| 714 |
|
|
var tM = Today.getMonth();
|
| 715 |
|
|
var tD = Today.getDate();
|
| 716 |
|
|
//////////////////////////////////////////////////////////////////////////////
|
| 717 |
|
|
|
| 718 |
|
|
var width = "130";
|
| 719 |
|
|
var offsetx = 2;
|
| 720 |
|
|
var offsety = 10;
|
| 721 |
|
|
|
| 722 |
|
|
var x = 0;
|
| 723 |
|
|
var y = 0;
|
| 724 |
|
|
var snow = 0;
|
| 725 |
|
|
var sw = 0;
|
| 726 |
|
|
var cnt = 0;
|
| 727 |
|
|
|
| 728 |
|
|
var dStyle;
|
| 729 |
|
|
document.onmousemove = mEvn;
|
| 730 |
|
|
|
| 731 |
sysadm |
1.2 |
//显示详细日期资料
|
| 732 |
sysadm |
1.1 |
function mOvr(v) {
|
| 733 |
|
|
var s,festival;
|
| 734 |
|
|
var sObj=eval('SD'+ v);
|
| 735 |
|
|
var d=sObj.innerHTML-1;
|
| 736 |
|
|
|
| 737 |
|
|
//sYear,sMonth,sDay,week,
|
| 738 |
|
|
//lYear,lMonth,lDay,isLeap,
|
| 739 |
|
|
//cYear,cMonth,cDay
|
| 740 |
|
|
|
| 741 |
|
|
if(sObj.innerHTML!='') {
|
| 742 |
|
|
|
| 743 |
|
|
sObj.style.cursor = 's-resize';
|
| 744 |
|
|
|
| 745 |
|
|
if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
|
| 746 |
|
|
festival = '';
|
| 747 |
|
|
else
|
| 748 |
|
|
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
|
| 749 |
|
|
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
|
| 750 |
|
|
'</TR></TABLE>';
|
| 751 |
|
|
|
| 752 |
|
|
s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066" style="filter:Alpha(opacity=80)"><TR><TD>' +
|
| 753 |
|
|
'<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
|
| 754 |
sysadm |
1.2 |
cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
|
| 755 |
|
|
'<font color="violet">农历'+(cld[d].isLeap?'闰 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
|
| 756 |
|
|
'<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
|
| 757 |
sysadm |
1.1 |
'</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';
|
| 758 |
|
|
|
| 759 |
|
|
document.all["detail"].innerHTML = s;
|
| 760 |
|
|
|
| 761 |
|
|
if (snow == 0) {
|
| 762 |
|
|
dStyle.left = x+offsetx-(width/2);
|
| 763 |
|
|
dStyle.top = y+offsety;
|
| 764 |
|
|
dStyle.visibility = "visible";
|
| 765 |
|
|
snow = 1;
|
| 766 |
|
|
}
|
| 767 |
|
|
}
|
| 768 |
|
|
}
|
| 769 |
|
|
|
| 770 |
sysadm |
1.2 |
//清除详细日期资料
|
| 771 |
sysadm |
1.1 |
function mOut() {
|
| 772 |
|
|
if ( cnt >= 1 ) { sw = 0; }
|
| 773 |
|
|
if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
|
| 774 |
|
|
else cnt++;
|
| 775 |
|
|
}
|
| 776 |
|
|
|
| 777 |
sysadm |
1.2 |
//取得位置
|
| 778 |
sysadm |
1.1 |
function mEvn() {
|
| 779 |
|
|
x=event.x;
|
| 780 |
|
|
y=event.y;
|
| 781 |
|
|
if (document.body.scrollLeft)
|
| 782 |
|
|
{x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
|
| 783 |
|
|
if (snow){
|
| 784 |
|
|
dStyle.left = x+offsetx-(width/2);
|
| 785 |
|
|
dStyle.top = y+offsety;
|
| 786 |
|
|
}
|
| 787 |
|
|
}
|
| 788 |
|
|
|
| 789 |
|
|
/*****************************************************************************
|
| 790 |
sysadm |
1.2 |
世界时间计算
|
| 791 |
sysadm |
1.1 |
*****************************************************************************/
|
| 792 |
|
|
var OneHour = 60*60*1000;
|
| 793 |
|
|
var OneDay = OneHour*24;
|
| 794 |
|
|
|
| 795 |
|
|
function showUTC(objD) {
|
| 796 |
|
|
var dn,s;
|
| 797 |
|
|
var hh = objD.getUTCHours();
|
| 798 |
|
|
var mm = objD.getUTCMinutes();
|
| 799 |
|
|
var ss = objD.getUTCSeconds();
|
| 800 |
sysadm |
1.2 |
s = objD.getUTCFullYear() + "年" + (objD.getUTCMonth() + 1) + "月" + objD.getUTCDate() +"日 ("+ nStr1[objD.getUTCDay()] +")";
|
| 801 |
sysadm |
1.1 |
|
| 802 |
sysadm |
1.2 |
if(hh>12) { hh = hh-12; dn = '下午'; }
|
| 803 |
|
|
else dn = '上午';
|
| 804 |
sysadm |
1.1 |
|
| 805 |
|
|
if(hh<10) hh = '0' + hh;
|
| 806 |
|
|
if(mm<10) mm = '0' + mm;
|
| 807 |
|
|
if(ss<10) ss = '0' + ss;
|
| 808 |
|
|
|
| 809 |
|
|
s += " " + dn + ' ' + hh + ":" + mm + ":" + ss;
|
| 810 |
|
|
return(s);
|
| 811 |
|
|
}
|
| 812 |
|
|
|
| 813 |
|
|
function showLocale(objD) {
|
| 814 |
|
|
var dn,s;
|
| 815 |
|
|
var hh = objD.getHours();
|
| 816 |
|
|
var mm = objD.getMinutes();
|
| 817 |
|
|
var ss = objD.getSeconds();
|
| 818 |
sysadm |
1.2 |
s = objD.getFullYear() + "年" + (objD.getMonth() + 1) + "月" + objD.getDate() +"日 ("+ nStr1[objD.getDay()] +")";
|
| 819 |
sysadm |
1.1 |
|
| 820 |
sysadm |
1.2 |
if(hh>12) { hh = hh-12; dn = '下午'; }
|
| 821 |
|
|
else dn = '上午';
|
| 822 |
sysadm |
1.1 |
|
| 823 |
|
|
if(hh<10) hh = '0' + hh;
|
| 824 |
|
|
if(mm<10) mm = '0' + mm;
|
| 825 |
|
|
if(ss<10) ss = '0' + ss;
|
| 826 |
|
|
|
| 827 |
|
|
s += " " + dn + ' ' + hh + ":" + mm + ":" + ss;
|
| 828 |
|
|
return(s);
|
| 829 |
|
|
}
|
| 830 |
|
|
|
| 831 |
sysadm |
1.2 |
//传入时差字串, 传回偏移之正负毫秒
|
| 832 |
sysadm |
1.1 |
function parseOffset(s) {
|
| 833 |
|
|
var sign,hh,mm,v;
|
| 834 |
|
|
sign = s.substr(0,1)=='-'?-1:1;
|
| 835 |
|
|
hh = Math.floor(s.substr(1,2));
|
| 836 |
|
|
mm = Math.floor(s.substr(3,2));
|
| 837 |
|
|
v = sign*(hh*60+mm)*60*1000;
|
| 838 |
|
|
return(v);
|
| 839 |
|
|
}
|
| 840 |
|
|
|
| 841 |
sysadm |
1.2 |
//传回UTC日期物件 (年,月-1,第几个星期几,几点)
|
| 842 |
sysadm |
1.1 |
function getWeekDay(y,m,nd,w,h){
|
| 843 |
|
|
var d,d2,w1;
|
| 844 |
|
|
if(nd>0){
|
| 845 |
|
|
d = new Date(Date.UTC(y, m, 1));
|
| 846 |
|
|
w1 = d.getUTCDay();
|
| 847 |
|
|
d2 = new Date( d.getTime() + ((w<w1? w+7-w1 : w-w1 )+(nd-1)*7 )*OneDay + h*OneHour);
|
| 848 |
|
|
}
|
| 849 |
|
|
else {
|
| 850 |
|
|
nd = Math.abs(nd);
|
| 851 |
|
|
d = new Date( Date.UTC(y, m+1, 1) - OneDay );
|
| 852 |
|
|
w1 = d.getUTCDay();
|
| 853 |
|
|
d2 = new Date( d.getTime() + ( (w>w1? w-7-w1 : w-w1 )-(nd-1)*7 )*OneDay + h*OneHour);
|
| 854 |
|
|
}
|
| 855 |
|
|
return(d2);
|
| 856 |
|
|
}
|
| 857 |
|
|
|
| 858 |
sysadm |
1.2 |
//传入某时间值, 日光节约字串 传回 true 或 false
|
| 859 |
sysadm |
1.1 |
function isDaylightSaving(d,strDS) {
|
| 860 |
|
|
|
| 861 |
|
|
if(strDS == '') return(false);
|
| 862 |
|
|
|
| 863 |
|
|
var m1,n1,w1,t1;
|
| 864 |
|
|
var m2,n2,w2,t2;
|
| 865 |
|
|
with (Math){
|
| 866 |
|
|
m1 = floor(strDS.substr(0,2))-1;
|
| 867 |
|
|
w1 = floor(strDS.substr(3,1));
|
| 868 |
|
|
t1 = floor(strDS.substr(4,1));
|
| 869 |
|
|
m2 = floor(strDS.substr(6,2))-1;
|
| 870 |
|
|
w2 = floor(strDS.substr(9,1));
|
| 871 |
|
|
t2 = floor(strDS.substr(10,1));
|
| 872 |
|
|
}
|
| 873 |
|
|
|
| 874 |
|
|
switch(strDS.substr(2,1)){
|
| 875 |
|
|
case 'F': n1=1; break;
|
| 876 |
|
|
case 'L': n1=-1; break;
|
| 877 |
|
|
default : n1=0; break;
|
| 878 |
|
|
}
|
| 879 |
|
|
|
| 880 |
|
|
switch(strDS.substr(8,1)){
|
| 881 |
|
|
case 'F': n2=1; break;
|
| 882 |
|
|
case 'L': n2=-1; break;
|
| 883 |
|
|
default : n2=0; break;
|
| 884 |
|
|
}
|
| 885 |
|
|
|
| 886 |
|
|
|
| 887 |
|
|
var d1, d2, re;
|
| 888 |
|
|
|
| 889 |
|
|
if(n1==0)
|
| 890 |
|
|
d1 = new Date(Date.UTC(d.getUTCFullYear(), m1, Math.floor(strDS.substr(2,2)),t1));
|
| 891 |
|
|
else
|
| 892 |
|
|
d1 = getWeekDay(d.getUTCFullYear(),m1,n1,w1,t1);
|
| 893 |
|
|
|
| 894 |
|
|
if(n2==0)
|
| 895 |
|
|
d2 = new Date(Date.UTC(d.getUTCFullYear(), m2, Math.floor(strDS.substr(8,2)),t2));
|
| 896 |
|
|
else
|
| 897 |
|
|
d2 = getWeekDay(d.getUTCFullYear(),m2,n2,w2,t2);
|
| 898 |
|
|
|
| 899 |
|
|
if(d2>d1)
|
| 900 |
|
|
re = (d>d1 && d<d2)? true: false;
|
| 901 |
|
|
else
|
| 902 |
|
|
re = (d>d1 && d<d2)? false: true;
|
| 903 |
|
|
|
| 904 |
|
|
return(re);
|
| 905 |
|
|
}
|
| 906 |
|
|
|
| 907 |
|
|
var isDS = false;
|
| 908 |
|
|
|
| 909 |
sysadm |
1.2 |
//计算全球时间
|
| 910 |
sysadm |
1.1 |
function getGlobeTime() {
|
| 911 |
|
|
var d,s;
|
| 912 |
|
|
d = new Date();
|
| 913 |
|
|
d.setTime(d.getTime()+parseOffset(objTimeZone[0]));
|
| 914 |
|
|
isDS=isDaylightSaving(d,objTimeZone[1]);
|
| 915 |
|
|
if(isDS) d.setTime(d.getTime()+OneHour);
|
| 916 |
|
|
|
| 917 |
|
|
return(showUTC(d));
|
| 918 |
|
|
}
|
| 919 |
|
|
|
| 920 |
|
|
var objTimeZone;
|
| 921 |
|
|
var objContinentMenu;
|
| 922 |
|
|
var objCountryMenu;
|
| 923 |
|
|
|
| 924 |
|
|
function tick() {
|
| 925 |
|
|
var today;
|
| 926 |
|
|
today = new Date();
|
| 927 |
|
|
LocalTime.innerHTML = showLocale(today);
|
| 928 |
|
|
GlobeTime.innerHTML = getGlobeTime();
|
| 929 |
|
|
window.setTimeout("tick()", 1000);
|
| 930 |
|
|
}
|
| 931 |
|
|
|
| 932 |
sysadm |
1.2 |
//指定自定索引时区
|
| 933 |
sysadm |
1.1 |
function setTZ(a,c){
|
| 934 |
|
|
objContinentMenu.options[a].selected=true;
|
| 935 |
|
|
chContinent();
|
| 936 |
|
|
objCountryMenu.options[c].selected=true;
|
| 937 |
|
|
chCountry();
|
| 938 |
|
|
}
|
| 939 |
|
|
|
| 940 |
sysadm |
1.2 |
//变更区域
|
| 941 |
sysadm |
1.1 |
function chContinent() {
|
| 942 |
|
|
var key,i;
|
| 943 |
|
|
continent = objContinentMenu.options[objContinentMenu.selectedIndex].text;
|
| 944 |
|
|
for (var i = objCountryMenu.options.length-1; i >= 0; i--)
|
| 945 |
|
|
objCountryMenu[0]=null;
|
| 946 |
|
|
for (key in timeData[continent])
|
| 947 |
|
|
objCountryMenu.options[objCountryMenu.options.length]=new Option(key);
|
| 948 |
|
|
objCountryMenu.options[0].selected=true;
|
| 949 |
|
|
chCountry();
|
| 950 |
|
|
}
|
| 951 |
|
|
|
| 952 |
sysadm |
1.2 |
//变更国家
|
| 953 |
sysadm |
1.1 |
function chCountry() {
|
| 954 |
|
|
var txtContinent = objContinentMenu.options[objContinentMenu.selectedIndex].text;
|
| 955 |
|
|
var txtCountry = objCountryMenu.options[objCountryMenu.selectedIndex].text;
|
| 956 |
|
|
|
| 957 |
|
|
objTimeZone = timeData[txtContinent][txtCountry];
|
| 958 |
|
|
|
| 959 |
|
|
getGlobeTime();
|
| 960 |
|
|
|
| 961 |
sysadm |
1.2 |
//地图位移
|
| 962 |
|
|
City.innerHTML = (isDS==true?"<SPAN STYLE='font-size:12pt;font-family:Wingdings; color:Red;'>R</span> ":'') + objTimeZone[2]; //首都
|
| 963 |
sysadm |
1.1 |
var pos = Math.floor(objTimeZone[0].substr(0,3));
|
| 964 |
|
|
if(pos<0) pos+=24;
|
| 965 |
|
|
pos*=-10;
|
| 966 |
|
|
world.style.left = pos;
|
| 967 |
|
|
|
| 968 |
|
|
}
|
| 969 |
|
|
|
| 970 |
|
|
///////////////////////////////////////////////////////////////////////////
|
| 971 |
|
|
|
| 972 |
|
|
function initialize() {
|
| 973 |
|
|
var key;
|
| 974 |
|
|
|
| 975 |
sysadm |
1.2 |
//时间
|
| 976 |
sysadm |
1.1 |
map.filters.Light.Clear();
|
| 977 |
|
|
map.filters.Light.addAmbient(255,255,255,60);
|
| 978 |
|
|
map.filters.Light.addCone(120, 60, 80, 120, 60, 255,255,255,120,60);
|
| 979 |
|
|
|
| 980 |
|
|
objContinentMenu=document.WorldClock.continentMenu;
|
| 981 |
|
|
objCountryMenu=document.WorldClock.countryMenu;
|
| 982 |
|
|
|
| 983 |
|
|
for (key in timeData)
|
| 984 |
|
|
objContinentMenu[objContinentMenu.length]=new Option(key);
|
| 985 |
|
|
|
| 986 |
|
|
setTZ(0,18);
|
| 987 |
|
|
|
| 988 |
|
|
tick();
|
| 989 |
|
|
|
| 990 |
|
|
|
| 991 |
sysadm |
1.2 |
//月历
|
| 992 |
sysadm |
1.1 |
dStyle = detail.style;
|
| 993 |
|
|
CLD.SY.selectedIndex=tY-1900;
|
| 994 |
|
|
CLD.SM.selectedIndex=tM;
|
| 995 |
|
|
drawCld(tY,tM);
|
| 996 |
|
|
|
| 997 |
|
|
}
|
| 998 |
|
|
|
| 999 |
|
|
//-->
|
| 1000 |
|
|
</SCRIPT>
|
| 1001 |
|
|
<body oncontextmenu=self.event.returnValue=false onload=initialize()>
|
| 1002 |
|
|
<center>
|
| 1003 |
|
|
<?
|
| 1004 |
|
|
include "./head.inc.php";
|
| 1005 |
|
|
?>
|
| 1006 |
|
|
<table width="760" border="0" cellpadding="0" cellspacing="0">
|
| 1007 |
|
|
<tr height=20 bgcolor=#F3F9FC>
|
| 1008 |
|
|
<td width="20"> </td>
|
| 1009 |
sysadm |
1.2 |
<td>枫林在线 >> 万年历</td>
|
| 1010 |
sysadm |
1.1 |
<td width="20"> </td>
|
| 1011 |
|
|
</tr>
|
| 1012 |
|
|
<tr>
|
| 1013 |
|
|
<td colspan=3 height=1 bgcolor=gray></td>
|
| 1014 |
|
|
</tr>
|
| 1015 |
|
|
<tr height=5>
|
| 1016 |
|
|
<td> </td>
|
| 1017 |
|
|
</tr>
|
| 1018 |
|
|
</table>
|
| 1019 |
|
|
<SCRIPT language=JavaScript><!--
|
| 1020 |
|
|
if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
|
| 1021 |
sysadm |
1.2 |
document.write("<h1>你的浏览器无法执行此程式。</h1>此程式需在 IE4 以后的版本才能执行!!")
|
| 1022 |
sysadm |
1.1 |
//--></SCRIPT>
|
| 1023 |
|
|
<table width="760" border="0" cellpadding="0" cellspacing="0">
|
| 1024 |
|
|
<tr>
|
| 1025 |
|
|
<td>
|
| 1026 |
|
|
<DIV id=detail
|
| 1027 |
|
|
style="Z-INDEX: 3; FILTER: shadow(color=#333333,direction=135); WIDTH: 140px; POSITION: absolute; HEIGHT: 120px"></DIV>
|
| 1028 |
|
|
<CENTER>
|
| 1029 |
|
|
<TABLE border=0>
|
| 1030 |
|
|
<TBODY>
|
| 1031 |
sysadm |
1.2 |
<TR><!------------------------------ 世界时间 ----------------------------------->
|
| 1032 |
sysadm |
1.1 |
<FORM name=WorldClock>
|
| 1033 |
|
|
<TD vAlign=top align=middle width=240 height=340><FONT
|
| 1034 |
sysadm |
1.2 |
style="FONT-SIZE: 9pt" size=2><B>本地时间</B></FONT><BR><SPAN id=LocalTime
|
| 1035 |
|
|
style="FONT-SIZE: 9pt; COLOR: #000080; FONT-FAMILY: Arial">0000年0月0日 ( )
|
| 1036 |
|
|
午 00:00:00</SPAN>
|
| 1037 |
|
|
<P><SPAN id=City style="FONT-SIZE: 9pt; WIDTH: 150px">中国</SPAN> <BR><SPAN
|
| 1038 |
sysadm |
1.1 |
id=GlobeTime
|
| 1039 |
sysadm |
1.2 |
style="FONT-SIZE: 9pt; COLOR: #000080; FONT-FAMILY: Arial">0000年0月0日 ( )
|
| 1040 |
|
|
午 00:00:00</SPAN><BR>
|
| 1041 |
sysadm |
1.1 |
<TABLE style="FONT-SIZE: 10pt; FONT-FAMILY: Wingdings">
|
| 1042 |
|
|
<TBODY>
|
| 1043 |
|
|
<TR>
|
| 1044 |
|
|
<TD align=middle>Ú
|
| 1045 |
|
|
<DIV id=map
|
| 1046 |
|
|
style="FILTER: Light; OVERFLOW: hidden; WIDTH: 240px; HEIGHT: 120px; BACKGROUND-COLOR: mediumblue"><FONT
|
| 1047 |
|
|
id=world
|
| 1048 |
|
|
style="FONT-SIZE: 185px; LEFT: 0px; COLOR: green; FONT-FAMILY: Webdings; POSITION: relative; TOP: -26px">ûû</FONT>
|
| 1049 |
|
|
</DIV>Ù </TD></TR></TBODY></TABLE><BR><SELECT
|
| 1050 |
|
|
style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; WIDTH: 240px; LINE-HEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: #bcc496; FONT-VARIANT: normal"
|
| 1051 |
|
|
onchange=chContinent() name=continentMenu></SELECT><BR><SELECT
|
| 1052 |
|
|
style="FONT-WEIGHT: normal; FONT-SIZE: 9pt; WIDTH: 240px; LINE-HEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: #bcc496; FONT-VARIANT: normal"
|
| 1053 |
sysadm |
1.2 |
onchange=chCountry() name=countryMenu></SELECT></P></TD></FORM><!------------------------------ 万年历 ----------------------------------->
|
| 1054 |
sysadm |
1.1 |
<FORM name=CLD>
|
| 1055 |
|
|
<TD align=middle height=340>
|
| 1056 |
|
|
<DIV style="Z-INDEX: -1; POSITION: absolute; TOP: 150px"><FONT id=YMBG
|
| 1057 |
|
|
style="FONT-SIZE: 100pt; COLOR: #f0f0f0; FONT-FAMILY: 'Arial Black'"> 0000<BR> JUN</FONT>
|
| 1058 |
|
|
</DIV>
|
| 1059 |
|
|
<TABLE border=0>
|
| 1060 |
|
|
<TBODY>
|
| 1061 |
|
|
<TR>
|
| 1062 |
|
|
<TD bgColor=#000080 colSpan=7><FONT style="FONT-SIZE: 9pt"
|
| 1063 |
sysadm |
1.2 |
color=#ffffff size=2>西历<SELECT style="FONT-SIZE: 9pt"
|
| 1064 |
sysadm |
1.1 |
onchange=changeCld() name=SY>
|
| 1065 |
|
|
<SCRIPT language=JavaScript><!--
|
| 1066 |
|
|
for(i=1900;i<2051;i++) document.write('<option>'+i)
|
| 1067 |
|
|
//--></SCRIPT>
|
| 1068 |
sysadm |
1.2 |
</SELECT>年<SELECT style="FONT-SIZE: 9pt" onchange=changeCld()
|
| 1069 |
sysadm |
1.1 |
name=SM>
|
| 1070 |
|
|
<SCRIPT language=JavaScript><!--
|
| 1071 |
|
|
for(i=1;i<13;i++) document.write('<option>'+i)
|
| 1072 |
|
|
//--></SCRIPT>
|
| 1073 |
sysadm |
1.2 |
</SELECT>月</FONT> <FONT id=GZ color=#ffff00 size=4></FONT><BR></TD></TR>
|
| 1074 |
sysadm |
1.1 |
<TR align=middle bgColor=#ccccff>
|
| 1075 |
sysadm |
1.2 |
<TD width=54>日</TD>
|
| 1076 |
|
|
<TD width=54>一</TD>
|
| 1077 |
|
|
<TD width=54>二</TD>
|
| 1078 |
|
|
<TD width=50>三</TD>
|
| 1079 |
|
|
<TD width=54>四</TD>
|
| 1080 |
|
|
<TD width=54>五</TD>
|
| 1081 |
|
|
<TD width=54>六</TD></TR>
|
| 1082 |
sysadm |
1.1 |
<SCRIPT language=JavaScript><!--
|
| 1083 |
|
|
var gNum, color1, color2;
|
| 1084 |
|
|
|
| 1085 |
sysadm |
1.2 |
// 星期六颜色
|
| 1086 |
sysadm |
1.1 |
switch (conWeekend) {
|
| 1087 |
|
|
case 1:
|
| 1088 |
|
|
color1 = 'black';
|
| 1089 |
|
|
color2 = color1;
|
| 1090 |
|
|
break;
|
| 1091 |
|
|
case 2:
|
| 1092 |
|
|
color1 = 'green';
|
| 1093 |
|
|
color2 = color1;
|
| 1094 |
|
|
break;
|
| 1095 |
|
|
case 3:
|
| 1096 |
|
|
color1 = 'red';
|
| 1097 |
|
|
color2 = color1;
|
| 1098 |
|
|
break;
|
| 1099 |
|
|
default :
|
| 1100 |
|
|
color1 = 'green';
|
| 1101 |
|
|
color2 = 'red';
|
| 1102 |
|
|
}
|
| 1103 |
|
|
|
| 1104 |
|
|
for(i=0;i<6;i++) {
|
| 1105 |
|
|
document.write('<tr align=center>')
|
| 1106 |
|
|
for(j=0;j<7;j++) {
|
| 1107 |
|
|
gNum = i*7+j
|
| 1108 |
|
|
document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()"><font id="SD' + gNum +'" size=5 face="Arial Black"')
|
| 1109 |
|
|
if(j == 0) document.write(' color=red')
|
| 1110 |
|
|
if(j == 6) {
|
| 1111 |
|
|
if(i%2==1) document.write(' color='+color2)
|
| 1112 |
|
|
else document.write(' color='+color1)
|
| 1113 |
|
|
}
|
| 1114 |
|
|
document.write(' TITLE=""> </font><br><font id="LD' + gNum + '" size=2 style="font-size:9pt"> </font></td>')
|
| 1115 |
|
|
}
|
| 1116 |
|
|
document.write('</tr>')
|
| 1117 |
|
|
}
|
| 1118 |
|
|
//--></SCRIPT>
|
| 1119 |
|
|
</TBODY></TABLE></TD>
|
| 1120 |
sysadm |
1.2 |
<TD vAlign=top align=middle width=40 height=340><BR><BR><BR>年<BR><BUTTON
|
| 1121 |
|
|
style="FONT-SIZE: 9pt" onclick="pushBtm('YD')">▲</BUTTON><BR><BUTTON
|
| 1122 |
|
|
style="FONT-SIZE: 9pt" onclick="pushBtm('YU')">◆</BUTTON>
|
| 1123 |
|
|
<P>月<BR><BUTTON style="FONT-SIZE: 9pt"
|
| 1124 |
|
|
onclick="pushBtm('MD')">▲</BUTTON><BR><BUTTON style="FONT-SIZE: 9pt"
|
| 1125 |
|
|
onclick="pushBtm('MU')">◆</BUTTON>
|
| 1126 |
|
|
<P><BUTTON style="FONT-SIZE: 9pt" onclick="pushBtm('')">当<BR>月</BUTTON>
|
| 1127 |
sysadm |
1.1 |
<P></P></TD></FORM></TR></TBODY></TABLE></CENTER>
|
| 1128 |
|
|
</td>
|
| 1129 |
|
|
</tr>
|
| 1130 |
|
|
</table>
|
| 1131 |
|
|
<?
|
| 1132 |
|
|
include "./foot.inc.php";
|
| 1133 |
|
|
?>
|
| 1134 |
|
|
</center>
|
| 1135 |
|
|
</body>
|
| 1136 |
|
|
</html>
|