




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
经典万年历 万年历查询 p fONT-FAMILY: 宋体; FONT-SIZE: 9pt;line-height:12pt:color:#000000TD fONT-FAMILY: 宋体,simsun; FONT-SIZE: 9pt a:link color:#000000; text-decoration:none a:visitedCOLOR: #000000; TEXT-DECORATION: none a:activecolor:green;text-decoration:nonea:hovercolor:red;text-decoration:underline 0x8; i=1) sum += (lunarInfoy-1900 & i)? 1: 0;return(sum+leapDays(y);/= 返回农历 y年闰月的天数function leapDays(y) if(leapMonth(y) return(lunarInfoy-1900 & 0x10000)? 30: 29);else return(0);/= 返回农历 y年闰哪个月 1-12 , 没闰返回 0function leapMonth(y) return(lunarInfoy-1900 & 0xf);/= 返回农历 y年m月的总天数function monthDays(y,m) return( (lunarInfoy-1900 & (0x10000m)? 30: 29 );/= 算出农历, 传入日期控件, 返回农历日期控件/ 该控件属性有 .year .month .day .isLeapfunction Lunar(objDate) var i, leap=0, temp=0;var offset = (Date.UTC(objDate.getFullYear(),objDate.getMonth(),objDate.getDate() - Date.UTC(1900,0,31)/86400000;for(i=1900; i0; i+) temp=lYearDays(i); offset-=temp; if(offset0) offset+=temp; i-; this.year = i;leap = leapMonth(i); /闰哪个月this.isLeap = false;for(i=1; i0; i+) /闰月if(leap0 & i=(leap+1) & this.isLeap=false) -i; this.isLeap = true; temp = leapDays(this.year); else temp = monthDays(this.year, i); /解除闰月if(this.isLeap=true & i=(leap+1) this.isLeap = false;offset -= temp;if(offset=0 & leap0 & i=leap+1)if(this.isLeap) this.isLeap = false; else this.isLeap = true; -i; if(offset0) offset += temp; -i; this.month = i;this.day = offset + 1;/=返回公历 y年某m+1月的天数function solarDays(y,m) if(m=1)return(y%4 = 0) & (y%100 != 0) | (y%400 = 0)? 29: 28);elsereturn(solarMonthm);/= 传入 offset 返回干支, 0=甲子function cyclical(num) return(Gannum%10+Zhinum%12);/= 阴历属性function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) this.isToday = false;/瓣句this.sYear = sYear; /公元年4位数字this.sMonth = sMonth; /公元月数字this.sDay = sDay; /公元日数字this.week = week; /星期, 1个中文/农历this.lYear = lYear; /公元年4位数字this.lMonth = lMonth; /农历月数字this.lDay = lDay; /农历日数字this.isLeap = isLeap; /是否为农历闰月?/八字this.cYear = cYear; /年柱, 2个中文this.cMonth = cMonth; /月柱, 2个中文this.cDay = cDay; /日柱, 2个中文this.color = ;this.lunarFestival = ; /农历节日this.solarFestival = ; /公历节日this.solarTerms = ; /节气/= 某年的第n个节气为几日(从0小寒起算)function sTerm(y,n) var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfon*60000 ) + Date.UTC(1900,0,6,2,5) );return(offDate.getUTCDate();/= 返回阴历控件 (y年,m+1月)/*功能说明: 返回整个月的日期资料控件使用方式: OBJ = new calendar(年,零起算月);OBJ.length 返回当月最大日OBJ.firstWeek 返回当月一日星期由 OBJ日期.属性名称 即可取得各项值OBJ日期.isToday 返回是否为今日 true 或 false其他 OBJ日期 属性参见 calElement() 中的注解*/function calendar(y,m) var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3;var cY, cM, cD; /年柱,月柱,日柱var lDPOS = new Array(3);var n = 0;var firstLM = 0;sDObj = new Date(y,m,1,0,0,0,0); /当月一日日期this.length = solarDays(y,m); /公历当月天数this.firstWeek = sDObj.getDay(); /公历当月1日星期几/年柱 1900年立春后为庚子年(60进制36)if(m2) cY=cyclical(y-1900+36-1);else cY=cyclical(y-1900+36);var term2=sTerm(y,2); /立春日期/月柱 1900年1月小寒以前为 丙子月(60进制12)var firstNode = sTerm(y,m*2) /返回当月节为几日开始cM = cyclical(y-1900)*12+m+12);/当月一日与 1900/1/1 相差天数/1900/1/1与 1970/1/1 相差25567日, 1900/1/1 日柱为甲戌日(60进制10)var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;for(var i=0;ilX) 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;lDPOSn+ = i-lD+1;/依节气调整二月分的年柱, 以立春为界if(m=1 & (i+1)=term2) cY=cyclical(y-1900+36);/依节气月柱, 以节为界if(i+1)=firstNode) cM = cyclical(y-1900)*12+m+13);/日柱cD = cyclical(dayCyclical+i);/sYear,sMonth,sDay,week,/lYear,lMonth,lDay,isLeap,/cYear,cMonth,cDaythisi = new calElement(y, m+1, i+1, nStr1(i+this.firstWeek)%7,lY, lM, lD+, lL,cY ,cM, cD );/节气tmp1=sTerm(y,m*2 )-1;tmp2=sTerm(y,m*2+1)-1;thistmp1.solarTerms = solarTermm*2;thistmp2.solarTerms = solarTermm*2+1;if(m=3) thistmp1.color = red; /清明颜色/公历节日for(i in sFtv)if(sFtvi.match(/(d2)(d2)(s*)(.+)$/)if(Number(RegExp.$1)=(m+1) thisNumber(RegExp.$2)-1.solarFestival += RegExp.$4 + ;if(RegExp.$3=*) thisNumber(RegExp.$2)-1.color = red;/月周节日for(i in wFtv)if(wFtvi.match(/(d2)(d)(d)(s*)(.+)$/)if(Number(RegExp.$1)=(m+1) tmp1=Number(RegExp.$2);tmp2=Number(RegExp.$3);if(tmp1tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek.solarFestival += RegExp.$5 + ;else tmp1 -= 5;tmp3 = (this.firstWeek+this.length-1)%7; /当月最后一天星期?thisthis.length - tmp3 - 7*tmp1 + tmp2 - (tmp2tmp3?7:0) - 1 .solarFestival += RegExp.$5 + ;/农历节日for(i in lFtv)if(lFtvi.match(/(d2)(.2)(s*)(.+)$/) tmp1=Number(RegExp.$1)-firstLM;if(tmp1=-11) tmp1=1;if(tmp1 =0 & tmp1= 0 & tmp2this.length & thistmp2.isLeap!=true) thistmp2.lunarFestival += RegExp.$4 + ;if(RegExp.$3=*) thistmp2.color = red;/复活节只出现在3或4月if(m=2 | m=3) var estDay = new easter(y);if(m = estDay.m)thisestDay.d-1.solarFestival = thisestDay.d-1.solarFestival+ 复活节 Easter Sunday;if(m=2) this20.solarFestival = this20.solarFestival+unescape(%20%u6D35%u8CE2%u751F%u65E5);/黑色星期五if(this.firstWeek+12)%7=5)this12.solarFestival += 黑色星期五;/今日if(y=tY & m=tM) thistD-1.isToday = true;/= 返回该年的复活节(春分后第一次满月周后的第一主日)function easter(y) var term2=sTerm(y,5); /取得春分日期var dayTerm2 = new Date(Date.UTC(y,2,term2,0,0,0,0); /取得春分的公历日期控件(春分一定出现在3月)var lDayTerm2 = new Lunar(dayTerm2); /取得取得春分农历if(lDayTerm2.day1874 & SY1908 & SY1911) yDisplay = 建国 + (SY-1949)=1)?元:SY-1949);GZ.innerHTML = yDisplay +年 农历 + cyclical(SY-1900+36) + 年 【+Animals(SY-4)%12+年】;YMBG.innerHTML = + SY + + monthNameSM;for(i=0;i-1 & sDcld.length) /日期内sObj.innerHTML = sD+1;if(cldsD.isToday) sObj.className = todyaColor; /今日颜色sObj.style.color = cldsD.color; /法定假日颜色if(cldsD.lDay=1) /显示农历月lObj.innerHTML = +(cldsD.isLeap?闰:) + cldsD.lMonth + 月 + (monthDays(cldsD.lYear,cldsD.lMonth)=29?小:大)+;else /显示农历日lObj.innerHTML = cDay(cldsD.lDay);s=cldsD.lunarFestival;if(s.length0) /农历节日if(s.length6) s = s.substr(0, 4)+.;s = s.fontcolor(red);else /公历节日s=cldsD.solarFestival;if(s.length0) size = (s.charCodeAt(0)0 & s.charCodeAt(0)size+2) s = s.substr(0, size)+.;s=(s=黑色星期五)?s.fontcolor(black):s.fontcolor(blue);else /廿四节气s=cldsD.solarTerms;if(s.length0) s = s.fontcolor(limegreen);if(cldsD.solarTerms=清明) s = 清明节.fontcolor(red);if(cldsD.solarTerms=芒种) s = 芒种节.fontcolor(red);if(cldsD.solarTerms=夏至) s = 夏至节.fontcolor(red);if(cldsD.solarTerms=冬至) s = 冬至节.fontcolor(red);if(s.length0) lObj.innerHTML = s;else /非日期sObj.innerHTML = ;lObj.innerHTML = ;function changeCld() var y,m;y=CLD.SY.selectedIndex+1900;m=CLD.SM.selectedIndex;drawCld(y,m);function pushBtm(K) switch (K)case YU :if(CLD.SY.selectedIndex0) CLD.SY.selectedIndex-;break;case YD :if(CLD.SY.selectedIndex0) CLD.SM.selectedIndex-;else CLD.SM.selectedIndex=11;if(CLD.SY.selectedIndex0) CLD.SY.selectedIndex-;break;case MD :if(CLD.SM.selectedIndex11) CLD.SM.selectedIndex+;else CLD.SM.selectedIndex=0;if(CLD.SY.selectedIndex150) CLD.SY.selectedIndex+;break;default :CLD.SY.selectedIndex=tY-1900;CLD.SM.selectedIndex=tM;changeCld();var Today = new Date();var tY = Today.getFullYear();var tM = Today.getMonth();var tD = Today.getDate();/var width = 130;var offsetx = 2;var offsety = 8;var x = 0;var y = 0;var snow = 0;var sw = 0;var cnt = 0;var dStyle;document.onmousemove = mEvn;/显示详细日期资料function mOvr(v) var s,festival;var sObj=eval(SD+ v);var d=sObj.innerHTML-1;/sYear,sMonth,sDay,week,/lYear,lMonth,lDay,isLeap,/cYear,cMonth,cDayif(sObj.innerHTML!=) sObj.style.cursor = s-resize;if(cldd.solarTerms = & cldd.solarFestival = & cldd.lunarFestival = )festival = ;elsefestival = +cldd.solarTerms + + cldd.solarFestival + + cldd.lunarFestival+;s= +cldd.sYear+ 年 +cldd.sMonth+ 月 +cldd.sDay+ 日星期+cldd.week+农历+(cldd.isLeap?闰 : )+cldd.lMonth+ 月 +cldd.lDay+ 日+cldd.cYear+年 +cldd.cMonth+月 +cldd.cDay + 日+ festival +;document.alldetail.innerHTML = s;if (snow = 0) dStyle.left = x+offsetx-(width/2);dStyle.top = y+offsety;dStyle.visibility = visible;snow = 1;/清除详细日期资料function mOut() if ( cnt = 1 ) sw = 0; if ( sw = 0 ) snow = 0; dStyle.visibility = hidden;else cnt+;/取得位置function mEvn() x=event.x;y=event.y;if (document.body.scrollLeft)x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;if (snow)dStyle.left = x+offsetx-(width/2);dStyle.top = y+offsety;/function changeTZ() CITY.innerHTML = CLD.TZ.value.substr(6) setCookie(TZ,CLD.TZ.selectedIndex)function tick() var today today = new Date() Clock.innerHTML = today.toLocaleString() Clock2.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value) window.setTimeout(tick(), 1000);function setCookie(name, value) var today = new Date()var expires = new Date()expires.setTime(today.getTime() + 1000*60*60*24*365)document.cookie = name + = + escape(value)+ ; expires= + expires.toGMTString()function getCookie(Name) var search = Name + = if(document.cookie.length 0) offset = document.cookie.indexOf(search) if(offset != -1) offset += search.length end = document.cookie.indexOf(;, offset) if(end = -1) end = document.cookie.le
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度水泥罐车运输与物流信息安全合同
- 河北省昌黎县2025年上半年公开招聘城市协管员试题含答案分析
- 2025版离婚协议书:子女抚养权及财产分割协议范本
- 河北省安国市2025年上半年事业单位公开遴选试题含答案分析
- 海南省五指山市2025年上半年公开招聘城市协管员试题含答案分析
- 2025版汽车融资租赁与售后服务包合同
- 2025年度智能家居系统地毯采购与安装服务合同范本
- 2025比亚迪购车赠送保养及救援服务合同
- 2025年度外国人入境口岸通关代理合同
- 贵州省修文县2025年上半年公开招聘村务工作者试题含答案分析
- 总经理助理岗位竞聘PPT范文-竞聘总经理助理演讲稿
- 世界范围内社区支持农业CSA(下)
- 急性缺血性脑卒中溶栓治疗
- NB∕T 10209-2019 风电场工程道路设计规范
- GB/T 4668-1995机织物密度的测定
- GB/T 17107-1997锻件用结构钢牌号和力学性能
- 《无人机组装与调试》课件 第一章
- 校园文化施工组织设计范本
- 轨行区作业安全专项方案
- 大地的耳朵-阅读答案
- 2021年内江市工会系统招聘笔试试题及答案解析
评论
0/150
提交评论