| 1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
| 2 |
<html>
|
| 3 |
<head>
|
| 4 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
| 5 |
<title>枫林在线 - 万年历</title>
|
| 6 |
<link rel="stylesheet" href="css/default.css" type="text/css">
|
| 7 |
</head>
|
| 8 |
<SCRIPT language=JScript>
|
| 9 |
<!--
|
| 10 |
/*****************************************************************************
|
| 11 |
个人偏好设定
|
| 12 |
*****************************************************************************/
|
| 13 |
|
| 14 |
var conWeekend = 3; // 星期六颜色显示: 1=黑色, 2=绿色, 3=红色, 4=隔周休
|
| 15 |
|
| 16 |
|
| 17 |
/*****************************************************************************
|
| 18 |
日期资料
|
| 19 |
*****************************************************************************/
|
| 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 |
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
|
| 41 |
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
|
| 42 |
var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
|
| 43 |
var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
|
| 44 |
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 |
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
|
| 46 |
var nStr2 = new Array('初','十','廿','卅','□');
|
| 47 |
var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");
|
| 48 |
|
| 49 |
var sFtv = new Array(
|
| 50 |
"0101*元旦",
|
| 51 |
"0214 情人节",
|
| 52 |
"0308 妇女节",
|
| 53 |
"0501 劳动节",
|
| 54 |
"0504 青年节",
|
| 55 |
"0601 儿童节",
|
| 56 |
"0701 建党节 香港回归纪念",
|
| 57 |
"0801 建军节",
|
| 58 |
"1001*国庆节");
|
| 59 |
|
| 60 |
//农历节日 *表示放假日
|
| 61 |
var lFtv = new Array(
|
| 62 |
"0101*春节",
|
| 63 |
"0115 元宵节",
|
| 64 |
"0505 端午节",
|
| 65 |
"0815 中秋节",
|
| 66 |
"0909 重阳节",
|
| 67 |
"1224 小年",
|
| 68 |
"0100*除夕");
|
| 69 |
|
| 70 |
//某月的第几个星期几。 5,6,7,8 表示到数第 1,2,3,4 个星期几
|
| 71 |
var wFtv = new Array(
|
| 72 |
"0520 母亲节 Mother's Day",
|
| 73 |
"0630 父亲节 Father's Day",
|
| 74 |
"1144 感恩节 Thanksgiving Day");
|
| 75 |
|
| 76 |
|
| 77 |
|
| 78 |
//世界时间资料
|
| 79 |
var timeData = {
|
| 80 |
"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 |
},
|
| 103 |
"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 |
},
|
| 132 |
"North Europe 北欧": { //----------------------------------------------
|
| 133 |
"Denmark 丹麦":["+0100","04F03|10L03","哥本哈根"],
|
| 134 |
"Finland 芬兰":["+0200","03L01|10L01","赫尔辛基"],
|
| 135 |
"Iceland 冰岛":["+0000","","雷克雅未克"],
|
| 136 |
"Norwegian 挪威":["+0100","","奥斯陆"],
|
| 137 |
"Sweden 瑞典":["+0100","03L01|10L01","斯德哥尔摩"]
|
| 138 |
},
|
| 139 |
"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 |
},
|
| 164 |
"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 |
},
|
| 173 |
"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 |
},
|
| 186 |
"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 |
},
|
| 201 |
"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 |
},
|
| 234 |
"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 |
},
|
| 282 |
"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 |
}
|
| 308 |
};
|
| 309 |
|
| 310 |
|
| 311 |
|
| 312 |
/*****************************************************************************
|
| 313 |
日期计算
|
| 314 |
*****************************************************************************/
|
| 315 |
|
| 316 |
//====================================== 传回农历 y年的总天数
|
| 317 |
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 |
//====================================== 传回农历 y年闰月的天数
|
| 324 |
function leapDays(y) {
|
| 325 |
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29);
|
| 326 |
else return(0);
|
| 327 |
}
|
| 328 |
|
| 329 |
//====================================== 传回农历 y年闰哪个月 1-12 , 没闰传回 0
|
| 330 |
function leapMonth(y) {
|
| 331 |
return(lunarInfo[y-1900] & 0xf);
|
| 332 |
}
|
| 333 |
|
| 334 |
//====================================== 传回农历 y年m月的总天数
|
| 335 |
function monthDays(y,m) {
|
| 336 |
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
|
| 337 |
}
|
| 338 |
|
| 339 |
|
| 340 |
//====================================== 算出农历, 传入日期物件, 传回农历日期物件
|
| 341 |
// 该物件属性有 .year .month .day .isLeap
|
| 342 |
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 |
leap = leapMonth(i); //闰哪个月
|
| 354 |
this.isLeap = false;
|
| 355 |
|
| 356 |
for(i=1; i<13 && offset>0; i++) {
|
| 357 |
//闰月
|
| 358 |
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 |
//解除闰月
|
| 364 |
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 |
//==============================传回国历 y年某m+1月的天数
|
| 382 |
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 |
//============================== 传入 offset 传回干支, 0=甲子
|
| 389 |
function cyclical(num) {
|
| 390 |
return(Gan[num%10]+Zhi[num%12]);
|
| 391 |
}
|
| 392 |
|
| 393 |
//============================== 月历属性
|
| 394 |
function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {
|
| 395 |
|
| 396 |
this.isToday = false;
|
| 397 |
//国历
|
| 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 |
|
| 412 |
this.color = '';
|
| 413 |
|
| 414 |
this.lunarFestival = ''; //农历节日
|
| 415 |
this.solarFestival = ''; //国历节日
|
| 416 |
this.solarTerms = ''; //节气
|
| 417 |
}
|
| 418 |
|
| 419 |
//===== 某年的第n个节气为几日(从0小寒起算)
|
| 420 |
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 |
//============================== 传回月历物件 (y年,m+1月)
|
| 429 |
/*
|
| 430 |
功能说明: 传回整个月的日期资料物件
|
| 431 |
|
| 432 |
使用方式: OBJ = new calendar(年,零起算月);
|
| 433 |
|
| 434 |
OBJ.length 传回当月最大日
|
| 435 |
OBJ.firstWeek 传回当月一日星期
|
| 436 |
|
| 437 |
由 OBJ[日期].属性名称 即可取得各项值
|
| 438 |
|
| 439 |
OBJ[日期].isToday 传回是否为今日 true 或 false
|
| 440 |
|
| 441 |
其他 OBJ[日期] 属性参见 calElement() 中的注解
|
| 442 |
*/
|
| 443 |
function calendar(y,m) {
|
| 444 |
|
| 445 |
var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3;
|
| 446 |
var cY, cM, cD; //年柱,月柱,日柱
|
| 447 |
var lDPOS = new Array(3);
|
| 448 |
var n = 0;
|
| 449 |
var firstLM = 0;
|
| 450 |
|
| 451 |
sDObj = new Date(y,m,1,0,0,0,0); //当月一日日期
|
| 452 |
|
| 453 |
this.length = solarDays(y,m); //国历当月天数
|
| 454 |
this.firstWeek = sDObj.getDay(); //国历当月1日星期几
|
| 455 |
|
| 456 |
////////年柱 1900年春分后为庚子年(60进制36)
|
| 457 |
if(m<2) cY=cyclical(y-1900+36-1);
|
| 458 |
else cY=cyclical(y-1900+36);
|
| 459 |
var term2=sTerm(y,2); //立春日期
|
| 460 |
|
| 461 |
////////月柱 1900年1月小寒以前为 丙子月(60进制12)
|
| 462 |
var firstNode = sTerm(y,m*2) //传回当月「节」为几日开始
|
| 463 |
cM = cyclical((y-1900)*12+m+12);
|
| 464 |
|
| 465 |
//当月一日与 1900/1/1 相差天数
|
| 466 |
//1900/1/1与 1970/1/1 相差25567日, 1900/1/1 日柱为甲戌日(60进制10)
|
| 467 |
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 |
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 |
|
| 480 |
if(n==0) firstLM = lM;
|
| 481 |
lDPOS[n++] = i-lD+1;
|
| 482 |
}
|
| 483 |
|
| 484 |
//依节气调整二月分的年柱, 以春分为界
|
| 485 |
if(m==1 && (i+1)==term2) cY=cyclical(y-1900+36);
|
| 486 |
//依节气月柱, 以「节」为界
|
| 487 |
if((i+1)==firstNode) cM = cyclical((y-1900)*12+m+13);
|
| 488 |
//日柱
|
| 489 |
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 |
//节气
|
| 504 |
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 |
if(m==3) this[tmp1].color = 'red'; //清明颜色
|
| 509 |
|
| 510 |
//国历节日
|
| 511 |
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 |
//月周节日
|
| 519 |
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 |
tmp3 = (this.firstWeek+this.length-1)%7; //当月最后一天星期?
|
| 529 |
this[this.length - tmp3 - 7*tmp1 + tmp2 - (tmp2>tmp3?7:0) - 1 ].solarFestival += RegExp.$5 + ' ';
|
| 530 |
}
|
| 531 |
}
|
| 532 |
|
| 533 |
//农历节日
|
| 534 |
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 |
//复活节只出现在3或4月
|
| 549 |
if(m==2 || m==3) {
|
| 550 |
var estDay = new easter(y);
|
| 551 |
if(m == estDay.m)
|
| 552 |
this[estDay.d-1].solarFestival = this[estDay.d-1].solarFestival+' 复活节 Easter Sunday';
|
| 553 |
}
|
| 554 |
|
| 555 |
|
| 556 |
//if(m==2) this[20].solarFestival = this[20].solarFestival+unescape('%20%u6D35%u8CE2%u751F%u65E5');
|
| 557 |
|
| 558 |
//黑色星期五
|
| 559 |
if((this.firstWeek+12)%7==5)
|
| 560 |
this[12].solarFestival += '黑色星期五 ';
|
| 561 |
|
| 562 |
//今日
|
| 563 |
if(y==tY && m==tM) this[tD-1].isToday = true;
|
| 564 |
}
|
| 565 |
|
| 566 |
//======================================= 传回该年的复活节(春分后第一次满月周后的第一主日)
|
| 567 |
function easter(y) {
|
| 568 |
|
| 569 |
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 |
|
| 573 |
if(lDayTerm2.day<15) //取得下个月圆的相差天数
|
| 574 |
var lMlen= 15-lDayTerm2.day;
|
| 575 |
else
|
| 576 |
var lMlen= (lDayTerm2.isLeap? leapDays(y): monthDays(y,lDayTerm2.month)) - lDayTerm2.day + 15;
|
| 577 |
|
| 578 |
//一天等于 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 |
|
| 582 |
this.m = dayEaster.getUTCMonth();
|
| 583 |
this.d = dayEaster.getUTCDate();
|
| 584 |
|
| 585 |
}
|
| 586 |
|
| 587 |
//====================== 中文日期
|
| 588 |
function cDay(d){
|
| 589 |
var s;
|
| 590 |
|
| 591 |
switch (d) {
|
| 592 |
case 10:
|
| 593 |
s = '初十'; break;
|
| 594 |
case 20:
|
| 595 |
s = '二十'; break;
|
| 596 |
break;
|
| 597 |
case 30:
|
| 598 |
s = '三十'; break;
|
| 599 |
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 |
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 |
|
| 619 |
GZ.innerHTML = yDisplay +'年 农历' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';
|
| 620 |
|
| 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 |
if(sD>-1 && sD<cld.length) { //日期内
|
| 633 |
sObj.innerHTML = sD+1;
|
| 634 |
|
| 635 |
if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日颜色
|
| 636 |
|
| 637 |
sObj.style.color = cld[sD].color; //国定假日颜色
|
| 638 |
|
| 639 |
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 |
lObj.innerHTML = cDay(cld[sD].lDay);
|
| 643 |
|
| 644 |
s=cld[sD].lunarFestival;
|
| 645 |
if(s.length>0) { //农历节日
|
| 646 |
if(s.length>6) s = s.substr(0, 4)+'...';
|
| 647 |
s = s.fontcolor('red');
|
| 648 |
}
|
| 649 |
else { //国历节日
|
| 650 |
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 |
else { //廿四节气
|
| 657 |
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 |
else { //非日期
|
| 665 |
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 |
//显示详细日期资料
|
| 732 |
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 |
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 |
'</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 |
//清除详细日期资料
|
| 771 |
function mOut() {
|
| 772 |
if ( cnt >= 1 ) { sw = 0; }
|
| 773 |
if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
|
| 774 |
else cnt++;
|
| 775 |
}
|
| 776 |
|
| 777 |
//取得位置
|
| 778 |
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 |
世界时间计算
|
| 791 |
*****************************************************************************/
|
| 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 |
s = objD.getUTCFullYear() + "年" + (objD.getUTCMonth() + 1) + "月" + objD.getUTCDate() +"日 ("+ nStr1[objD.getUTCDay()] +")";
|
| 801 |
|
| 802 |
if(hh>12) { hh = hh-12; dn = '下午'; }
|
| 803 |
else dn = '上午';
|
| 804 |
|
| 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 |
s = objD.getFullYear() + "年" + (objD.getMonth() + 1) + "月" + objD.getDate() +"日 ("+ nStr1[objD.getDay()] +")";
|
| 819 |
|
| 820 |
if(hh>12) { hh = hh-12; dn = '下午'; }
|
| 821 |
else dn = '上午';
|
| 822 |
|
| 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 |
//传入时差字串, 传回偏移之正负毫秒
|
| 832 |
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 |
//传回UTC日期物件 (年,月-1,第几个星期几,几点)
|
| 842 |
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 |
//传入某时间值, 日光节约字串 传回 true 或 false
|
| 859 |
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 |
//计算全球时间
|
| 910 |
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 |
//指定自定索引时区
|
| 933 |
function setTZ(a,c){
|
| 934 |
objContinentMenu.options[a].selected=true;
|
| 935 |
chContinent();
|
| 936 |
objCountryMenu.options[c].selected=true;
|
| 937 |
chCountry();
|
| 938 |
}
|
| 939 |
|
| 940 |
//变更区域
|
| 941 |
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 |
//变更国家
|
| 953 |
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 |
//地图位移
|
| 962 |
City.innerHTML = (isDS==true?"<SPAN STYLE='font-size:12pt;font-family:Wingdings; color:Red;'>R</span> ":'') + objTimeZone[2]; //首都
|
| 963 |
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 |
//时间
|
| 976 |
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 |
//月历
|
| 992 |
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 |
<td>枫林在线 >> 万年历</td>
|
| 1010 |
<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 |
document.write("<h1>你的浏览器无法执行此程式。</h1>此程式需在 IE4 以后的版本才能执行!!")
|
| 1022 |
//--></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 |
<TR><!------------------------------ 世界时间 ----------------------------------->
|
| 1032 |
<FORM name=WorldClock>
|
| 1033 |
<TD vAlign=top align=middle width=240 height=340><FONT
|
| 1034 |
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 |
id=GlobeTime
|
| 1039 |
style="FONT-SIZE: 9pt; COLOR: #000080; FONT-FAMILY: Arial">0000年0月0日 ( )
|
| 1040 |
午 00:00:00</SPAN><BR>
|
| 1041 |
<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 |
onchange=chCountry() name=countryMenu></SELECT></P></TD></FORM><!------------------------------ 万年历 ----------------------------------->
|
| 1054 |
<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 |
color=#ffffff size=2>西历<SELECT style="FONT-SIZE: 9pt"
|
| 1064 |
onchange=changeCld() name=SY>
|
| 1065 |
<SCRIPT language=JavaScript><!--
|
| 1066 |
for(i=1900;i<2051;i++) document.write('<option>'+i)
|
| 1067 |
//--></SCRIPT>
|
| 1068 |
</SELECT>年<SELECT style="FONT-SIZE: 9pt" onchange=changeCld()
|
| 1069 |
name=SM>
|
| 1070 |
<SCRIPT language=JavaScript><!--
|
| 1071 |
for(i=1;i<13;i++) document.write('<option>'+i)
|
| 1072 |
//--></SCRIPT>
|
| 1073 |
</SELECT>月</FONT> <FONT id=GZ color=#ffff00 size=4></FONT><BR></TD></TR>
|
| 1074 |
<TR align=middle bgColor=#ccccff>
|
| 1075 |
<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 |
<SCRIPT language=JavaScript><!--
|
| 1083 |
var gNum, color1, color2;
|
| 1084 |
|
| 1085 |
// 星期六颜色
|
| 1086 |
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 |
<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 |
<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>
|