大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> ASP专区 -> 最完美的JS万年历(一)

最完美的JS万年历(一)

时间: 2021-07-31 作者:daque

<!doctype html public "-//w3c//dtd html 4.0 transitional//en"><!-- saved from url=(0031)http://26.28.144.2/wnl.htm --><!-- saved from url=(0049)http://joke.maillist.com.tw/files/08/00080501.htm --><html><head><title>日历</title><!-- ********************************************看到这个万日历的功夫,有些冲动,做的太好了,在此感动作家的发愤处事----------------------------------爱网无穷1900-2050年公历与旧历之日过程序 (ie版)版权一切(c), 任何情势之援用或连载前请来函奉告!!欢送来函彼此计划接洽与教正误谬。林洵贤(sean lin) sean@4u.net 体例南巢 leafch@163.net 载入并窜改tommy tommy@fun.21cn.com 完备梅竹松 sumyou@21cn.com 画龙点睛*************************************************步调最後矫正: 2001-8-22 - 南巢、tommy 将民国计年改成开国计年。并粉饰界面 - 梅竹松 减少一系列节日、震动日 2001-8-22 - 矫正各别语系的 windows 形成旧历没辙计划 (此缺点为微软 bug, 感动 stanley tsai 扶助尝试) - 一致日子功夫方法为遏制台的地区语系所设定之设方法 2000-8-4 - 矫正各别语系的 windows 形成旧历没辙计划 (此缺点为微软 bug, 感动 stanley tsai 扶助尝试) - 一致日子功夫方法为遏制台的地区语系所设定之设方法 2000-8-1 - 矫正某些时区阳光俭朴功夫机动安排 - 矫正采用时区画面扑腾题目 - 新增时区移至舆图中心 - 新增精细日子材料通明及暗影表露 2000-7-23 - 日历十足改为 javascript 重写 - 矫正若公历同月跨三个旧历月,节日排错题目 - 新增表露精细日子材料 - 矫正亚历桑那州夏季功夫题目************************************************** --><meta content="旧历; 公历; 日历; 节日; 时区; 骨气; 八字; 干支; 属相; gregorian solar; chinese lunar; calendar;" name=keywords><meta content=all name=robots><meta content="gregorian solar calendar and chinese lunar calendar" name=description><meta content="text/html; charset=utf8" http-equiv=content-type><script language=javascript><!--/***************************************************************************** 日子材料*****************************************************************************/var lunarinfo=new array(0x04bd8,0x04ae0,0x0a570,0x054d5,0x0d260,0x0d950,0x16554,0x056a0,0x09ad0,0x055d2,0x04ae0,0x0a5b6,0x0a4d0,0x0d250,0x1d255,0x0b540,0x0d6a0,0x0ada2,0x095b0,0x14977,0x04970,0x0a4b0,0x0b4b5,0x06a50,0x06d40,0x1ab54,0x02b60,0x09570,0x052f2,0x04970,0x06566,0x0d4a0,0x0ea50,0x06e95,0x05ad0,0x02b60,0x186e3,0x092e0,0x1c8d7,0x0c950,0x0d4a0,0x1d8a6,0x0b550,0x056a0,0x1a5b4,0x025d0,0x092d0,0x0d2b2,0x0a950,0x0b557,0x06ca0,0x0b550,0x15355,0x04da0,0x0a5d0,0x14573,0x052d0,0x0a9a8,0x0e950,0x06aa0,0x0aea6,0x0ab50,0x04b60,0x0aae4,0x0a570,0x05260,0x0f263,0x0d950,0x05b57,0x056a0,0x096d0,0x04dd5,0x04ad0,0x0a4d0,0x0d4d4,0x0d250,0x0d558,0x0b540,0x0b5a0,0x195a6,0x095b0,0x049b0,0x0a974,0x0a4b0,0x0b27a,0x06a50,0x06d40,0x0af46,0x0ab60,0x09570,0x04af5,0x04970,0x064b0,0x074a3,0x0ea50,0x06b58,0x055c0,0x0ab60,0x096d5,0x092e0,0x0c960,0x0d954,0x0d4a0,0x0da50,0x07552,0x056a0,0x0abb7,0x025d0,0x092d0,0x0cab5,0x0a950,0x0b4a0,0x0baa4,0x0ad50,0x055d9,0x04ba0,0x0a5b0,0x15176,0x052b0,0x0a930,0x07954,0x06aa0,0x0ad50,0x05b52,0x04b60,0x0a6e6,0x0a4e0,0x0d260,0x0ea65,0x0d530,0x05aa0,0x076a3,0x096d0,0x04bd7,0x04ad0,0x0a4d0,0x1d0b6,0x0d250,0x0d520,0x0dd45,0x0b5a0,0x056d0,0x055b2,0x049b0,0x0a577,0x0a4b0,0x0aa50,0x1b255,0x06d20,0x0ada0,0x14b63);var solarmonth=new array(31,28,31,30,31,30,31,31,30,31,30,31);var gan=new array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");var zhi=new array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");var animals=new array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");var solarterm = new array("小寒","大寒","雨水","雪水","惊蛰","春分","清朗","谷雨","立夏","小满","芒种","长至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","长至");var sterminfo = new array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758);var nstr1 = new array('日','一','二','三','四','五','六','七','八','九','十');var nstr2 = new array('初','十','廿','卅',' ');var monthname = new array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");//公历节日 *表白休假日var sftv = new array("0101*献岁元旦","0202 寰球湿地日","0210 国际局面节","0214 爱人节","0303 世界爱耳日","0308 三八节","0314 国际捕快日","0315 国际耗费者权力日","0321 寰球丛林日","0321 寰球童谣日","0322 寰球水日","0323 寰球局面日","0324 寰球防疫结核日","0330 tommy 华诞^^","0312 植树节","0401 愚人节","0407 寰球卫华诞","0422 寰球地球日","0501 国际处事节","0504 华夏青春节","0505 碘不足病防疫日","0508 寰球红新月会日","0512 国际看护节","0515 国际家园日","0517 寰球邮电通信日","0518 国际博物院日","0520 世界弟子养分日","0523 国际羊奶日","0531 寰球无烟日", "0601 国际童子节","0605 寰球情况日","0606 世界爱眼日","0617 防疫荒凉化和干旱日","0623 国际奥运会日","0625 世界地盘日","0626 国际反毒物日","0701 建党日","0707 华夏群众抗日搏斗祝贺日","0711 寰球人丁日","0801 建党节","0908 国际扫除文盲日","0910 教授节","0914 梅竹松 华诞^o^","0916 国际领导层养护日","0920 国际爱牙日","0927 寰球旅行日","1001*国庆节","1001 国际音乐日","1004 寰球众生日","1008 世界高血压日","1008 寰球视觉日","1009 寰球邮政日","1015 国际瞎子节","1016 寰球食粮日","1017 寰球取消艰难日","1024 共同国日","1108 华夏新闻记者日","1109 消防传播日","1114 寰球糖尿病日","1117 国际大弟子节","1201 寰球爱滋病日","1203 寰球残疾人日","1209 寰球足球日","1229 国际底栖生物百般性日");//旧历节日 *表白休假日var lftv = new array("0101*年节","0115 上元节","0323 妈祖生辰 (天上娘娘生日)","0505 端午","0707 七七爱人节","0815*八月节","0909 重阳","1208 农历腊月初八节","0100*大年夜");//半月的第几个礼拜几var wftv = new array("0520 国际母亲节","0530 世界助残日","0630 父亲节国际母亲节","0911 处事节","0932 国际和平常","0940 国际聋人节","1011 国际住宅日","1013 国际减少天然灾祸日","1144 戴德节");/*****************************************************************************日子计划*****************************************************************************///====================================== 传回旧历 y年的总天数function lyeardays(y) { var i, sum = 348; for(i=0x8000; i>0x8; i>>=1) sum += (lunarinfo[y-1900] & i)? 1: 0; return(sum+leapdays(y));}//====================================== 传回旧历 y年闰月的天数function leapdays(y) { if(leapmonth(y))return((lunarinfo[y-1900] & 0x10000)? 30: 29); else return(0);}//====================================== 传回旧历 y年闰哪个月 1-12 , 没闰传回 0function leapmonth(y) { return(lunarinfo[y-1900] & 0xf);}//====================================== 传回旧历 y年m月的总天数function monthdays(y,m) { return( (lunarinfo[y-1900] & (0x10000>>m))? 30: 29 );}//====================================== 算出旧历, 传入日子物件, 传回旧历日子物件// 该物件属性有 .year .month .day .isleap .yearcyl .daycyl .moncylfunction lunar(objdate) { var i, leap=0, temp=0; var offset = (date.utc(objdate.getfullyear(),objdate.getmonth(),objdate.getdate()) - date.utc(1900,0,31))/86400000; this.daycyl = offset + 40; this.moncyl = 14; for(i=1900; i<2050 && offset>0; i++) {temp = lyeardays(i);offset -= temp;this.moncyl += 12; } if(offset<0) {offset += temp;i--;this.moncyl -= 12; } this.year = i; this.yearcyl = i-1864; leap = leapmonth(i); //闰哪个月 this.isleap = false; for(i=1; i<13 && offset>0; i++) {//闰月if(leap>0 && i==(leap+1) && this.isleap==false) { --i; this.isleap = true; temp = leapdays(this.year); }else { temp = monthdays(this.year, i); }//废除闰月if(this.isleap==true && i==(leap+1)) this.isleap = false;offset -= temp;if(this.isleap == false) this.moncyl ++; } if(offset==0 && leap>0 && i==leap+1)if(this.isleap) { this.isleap = false; }else { this.isleap = true; --i; --this.moncyl;} if(offset<0){ offset += temp; --i; --this.moncyl; } this.month = i; this.day = offset + 1;}//==============================传回公历 y年某m+1月的天数function solardays(y,m) { if(m==1)return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28); elsereturn(solarmonth[m]);}//============================== 传入 offset 传回干支, 0=甲子function cyclical(num) { return(gan[num%10]+zhi[num%12]);}//============================== 日历属性function calelement(syear,smonth,sday,week,lyear,lmonth,lday,isleap,cyear,cmonth,cday) {this.istoday= false;//公历this.syear= syear;this.smonth = smonth;this.sday = sday;this.week = week;//旧历this.lyear= lyear;this.lmonth = lmonth;this.lday = lday;this.isleap = isleap;//干支this.cyear= cyear;this.cmonth = cmonth;this.cday = cday;this.color= '';this.lunarfestival = ''; //旧历节日this.solarfestival = ''; //公历节日this.solarterms= ''; //骨气}//===== 某年的第n个骨气为几日(从0小寒起算)function sterm(y,n) { var offdate = new date( ( 31556925974.7*(y-1900) + sterminfo[n]*60000) + date.utc(1900,0,6,2,5) ); return(offdate.getutcdate());}//============================== 传回日历物件 (y年,m+1月)function calendar(y,m) { var sdobj, ldobj, ly, lm, ld=1, ll, lx=0, tmp1, tmp2; var ldpos = new array(3); var n = 0; var firstlm = 0; sdobj = new date(y,m,1,0,0,0,0);//当月一日日子 this.length= solardays(y,m);//公历当月天数 this.firstweek = sdobj.getday();//公历当月1日礼拜几 for(var i=0;i<this.length;i++) {if(ld>lx) { sdobj = new date(y,m,i+1);//当月一日日子 ldobj = new lunar(sdobj); //旧历 ly= ldobj.year; //农积年 lm= ldobj.month;//旧历月 ld= ldobj.day;//旧历日 ll= ldobj.isleap; //旧历能否闰月 lx= ll? leapdays(ly): monthdays(ly,lm); //旧历当月最後一天 if(n==0) firstlm = lm; ldpos[n++] = i-ld+1;}//syear,smonth,sday,week,//lyear,lmonth,lday,isleap,//cyear,cmonth,cdaythis[i] = new calelement(y, m+1, i+1, nstr1[(i+this.firstweek)%7], ly, lm, ld++, ll, cyclical(ldobj.yearcyl) ,cyclical(ldobj.moncyl), cyclical(ldobj.daycyl++) );if((i+this.firstweek)%7==0) this[i].color = 'red';//周日脸色if((i+this.firstweek)%14==13) this[i].color = 'red';//周休二日脸色 } //骨气 tmp1=sterm(y,m*2)-1; tmp2=sterm(y,m*2+1)-1; this[tmp1].solarterms = solarterm[m*2]; this[tmp2].solarterms = solarterm[m*2+1]; if(m==3) this[tmp1].color = 'red'; //清朗脸色 //公历节日 for(i in sftv)if(sftv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/)) if(number(regexp.$1)==(m+1)) {this[number(regexp.$2)-1].solarfestival += regexp.$4 + ' ';if(regexp.$3=='*') this[number(regexp.$2)-1].color = 'red'; } //月周节日 for(i in wftv)if(wftv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/)) if(number(regexp.$1)==(m+1)) {tmp1=number(regexp.$2);tmp2=number(regexp.$3);this[((this.firstweek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstweek].solarfestival += regexp.$5 + ' '; } //旧历节日 for(i in lftv)if(lftv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) { tmp1=number(regexp.$1)-firstlm; if(tmp1==-11) tmp1=1; if(tmp1 >=0 && tmp1<n) {tmp2 = ldpos[tmp1] + number(regexp.$2) -1;if( tmp2 >= 0 && tmp2<this.length) { this[tmp2].lunarfestival += regexp.$4 + ' '; if(regexp.$3=='*') this[tmp2].color = 'red';} }} if(m==2) this[20].solarfestival = this[20].solarfestival+unescape('%20%u6d35%u8ce2%u751f%u65e5'); //玄色礼拜五 if((this.firstweek+12)%7==5)this[12].solarfestival += '玄色礼拜五'; //本日 if(y==ty && m==tm) this[td-1].istoday = true;}//====================== 华文日子function cday(d){ var s; switch (d) {case 10: s = '初十'; break;case 20: s = '二十'; break; break;case 30: s = '三十'; break; break;default : s = nstr2[math.floor(d/10)]; s += nstr1[d%10]; } return(s);}

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.