求农历的算法

Super wang 2024-05-16 18:48:28
最佳回答
如果你懂得网页脚本,以下地址中的脚本可以计算农历.可以下载下来看看它的源代码.部分内容://====================================== 返回农历 y年的总天数function lyeardays(y) {var i, sum = 348;for(i=0x8000; i>0x8; i>>=1) sum += (lunar**[y-1900] & i)? 1: 0;return(sum+leapdays(y));}//====================================== 返回农历 y年闰月的天数function leapdays(y) {if(leapmonth(y)) return((lunar**[y-1900] & 0x10000)? 30: 29);else return(0);}//====================================== 返回农历 y年闰哪个月 1-12 , 没闰返回 0function leapmonth(y) {return(lunar**[y-1900] & 0xf);}//====================================== 返回农历 y年m月的总天数function monthdays(y,m) {return( (lunar**[y-1900] & (0x10000>>m))? 30: 29 );}//====================================== 算出农历, 传入日期控件, 返回农历日期控件// 该控件属性有 .year .month .day .**leapfunction lunar(objdate) {var i, leap=0, temp=0;var offset = (date.utc(objdate.getfullyear(),objdate.getmonth(),objdate.getdate()) - date.utc(1900,0,31))/86400000;for(i=1900; i<2050 && offset>0; i++) { temp=lyeardays(i); offset-=temp; }if(offset<0) { offset+=temp; i--; }th**.year = i;leap = leapmonth(i); //闰哪个月th**.**leap = false;for(i=1; i<13 && offset>0; i++) {//闰月if(leap>0 && i==(leap+1) && th**.**leap==false){ --i; th**.**leap = true; temp = leapdays(th**.year); }else{ temp = monthdays(th**.year, i); }//解除闰月if(th**.**leap==true && i==(leap+1)) th**.**leap = false;offset -= temp;}if(offset==0 && leap>0 && i==leap+1)if(th**.**leap){ th**.**leap = false; }else{ th**.**leap = true; --i; }if(offset<0){ offset += temp; --i; }th**.month = i;th**.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,**leap,cyear,cmonth,cday) {th**.**today = false;//瓣句th**.syear = syear; //公元年4位数字th**.smonth = smonth; //公元月数字th**.sday = sday; //公元日数字th**.week = week; //星期, 1个中文//农历th**.lyear = lyear; //公元年4位数字th**.lmonth = lmonth; //农历月数字th**.lday = lday; //农历日数字th**.**leap = **leap; //是否为农历闰月?//八字th**.cyear = cyear; //年柱, 2个中文th**.cmonth = cmonth; //月柱, 2个中文th**.cday = cday; //日柱, 2个中文th**.color = '';th**.lunarfestival = ''; //农历节日th**.solarfestival = ''; //公历节日th**.solarterms = ''; //节气}//===== 某年的第n个节气为几日(从0小寒起算)function sterm(y,n) {var offdate = new date( ( 31556925974.7*(y-1900) + sterm**[n]*60000 ) + date.utc(1900,0,6,2,5) );return(offdate.getutcdate());}//============================== 返回阴历控件 (y年,m+1月)/*功能说明: 返回整个月的日期资料控件使用方式: obj = new calendar(年,零起算月);obj.length 返回当月最大日obj.firstweek 返回当月一日星期由 obj[日期].属性名称 即可取得各项值obj[日期].**today 返回是否为今日 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); //当月一日日期th**.length = solardays(y,m); //公历当月天数th**.firstweek = sdobj.getday(); //公历当月1日星期几////////年柱 1900年立春后为庚子年(60进制36)if(m<2) cy=cyclical(y-1900+36-1);else cy=cyclical(y-1900+36);var term2=sterm(y,2); //立春日期////////月柱 1900年1月小寒以前为 丙子月(60进制12)var firstnode = sterm(y,m*2) //返回当月「节」为几日开始cm = cyclical((y-1900)*12+m+12);//当月一日与 1900/1/1 相差天数//1900/1/1与 1970/1/1 相差25567日, 1900/1/1 日柱为甲戌日(60进制10)var daycyclical = date.utc(y,m,1,0,0,0,0)/86400000+25567+10;for(var i=0;i<th**.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.**leap; //农历是否闰月lx = ll? leapdays(ly): monthdays(ly,lm); //农历当月最后一天if(n==0) firstlm = lm;ldpos[n++] = i-ld+1;}//依节气调整二月分的年柱, 以立春为界if(m==1 && (i+1)==term2) cy=cyclical(y-1900+36);//依节气月柱, 以「节」为界if((i+1)==firstnode) cm = cyclical((y-1900)*12+m+13);//日柱cd = cyclical(daycyclical+i);//syear,smonth,sday,week,//lyear,lmonth,lday,**leap,//cyear,cmonth,cdayth**[i] = new calelement(y, m+1, i+1, nstr1[(i+th**.firstweek)%7],ly, lm, ld++, ll,cy ,cm, cd );} 20210311
汇率兑换计算器

类似问答
  • 求灌砂法的计算公式?
    • 2024-05-16 06:49:31
    • 提问者: 未知
    灌砂法 本试验适用于现场测定细粒土、砂类土、和砾类土的密度.试样最大粒径一般不得超过15mm.测定密度层的厚度为150mm—200mm.(标准方法,但不适用于填石路堤等有大孔洞或大孔隙材料的压实度检测)基本原理是利用粒径0.30~0.60mm或0.25~0.50mm清洁干净的均匀砂,从一定高度自由下落到试洞内,按其单位...
  • 农历的算法是怎么算的?
    • 2024-05-16 01:30:07
    • 提问者: 未知
    农历一年为12或13个月,每个2113月天数依5261照月亮围绕地球运行周期而定,为410229或30天,闰年为13个月,1653**农历年平年为353或354天,闰年为384或385天,平均每年约为365.2422天(即地球环绕太阳一周的时间)。农历基本上以19年为一周期,由于农历一年约为355日,与地球年相差约11日...
  • 求助保险算法的问题?
    • 2024-05-16 01:13:00
    • 提问者: 未知
    这个没法帮您算每个产品的都不一样的不过如果您已经购买了,那同上会写到多少岁有多少现金价值的买保险前一定要想清楚为什么要买?买来打算做什么?任何保险如果你退保,都会损失很大的所以买之前一定要考虑清楚尤其是银保产品1、保险的本质是保障,而不是理财;2、近年来,保险公司为了迎合老百姓的需求,开发了一些投资理财类的险种,这些保险在提供保障的同时,也具有投资功能,比如说:投资连结保险、万能险等;3、如果某一...
  • **出生日期是按农历还是新历的算?
    • 2024-05-16 12:28:08
    • 提问者: 未知
    过去的老年人的**,一般是阴历阳历都有可能,尤其是农村出来的人,一般登记,都按阴历填报,所以,**很可能是阴历的年龄,但是不论是阴历还是阳历,在公认都是按照阳历计算的,出生晚的人,都是按照出生医学证明申报户口,医院也是按照阳历填写的,所以,现在年轻人,基本是没有阴历...
  • 求稀疏矩阵的矩阵乘法算法思路
    • 2024-05-16 06:14:58
    • 提问者: 未知
    严蔚敏的那本数据结构中,在稀疏矩阵那部分有讲解的,你到网上搜.
  • 求macd手工计算方法
    • 2024-05-16 01:42:20
    • 提问者: 未知
    解决第一个问题,平均线,平均线就是10日收盘价相加除以10,以你的例子数值为例 十日均线 第一天(因只有10天数据所以10日均线只有1天数值,如果有11天数据,第二天10日均线等于从第2天到第11天的10天数值相加后除以10数值相加) (2+2.2+2.4+2.6+2.8+3.0+3.2+3+2.5+2.2)/10=2.59 5日均线 第一天 (2+2...
  • (要求是简便方法算)
    • 2024-05-16 22:33:42
    • 提问者: 未知
    原式=﹙1+2+4+6+8.+98+100﹚﹢﹙2²+4²﹢6²﹢.98²) [1+(2+100)×50÷2]+[(1×2﹚²﹢﹙2×2﹚²﹢﹙2×3﹚²+.﹢﹙2×49﹚²] 2551+2²(1²﹢2²﹢3²﹢.﹢49²﹚ 2551+4×49×50×99÷6 164251
  • 求山东诸城历史名人,**也算
    • 2024-05-16 18:58:56
    • 提问者: 未知
    历史名人  虞舜(约生卒于原始社会末期),姓姚,名重华。  据《史记》记载,尧让位于舜,践帝位39年。  舜,相传为**历史上的先贤,是尧之后古帝王,古帝王部落联盟首领,是禅让制的代表,以受尧的“禅让”而称王于天下,当时,国号为“虞”,故称“虞舜”。虞舜待继母以孝,待弟以仁,儒家视为理想人物,是仁孝的典范。  公冶长(生卒于春秋时),名长,字子长(又名芝,又字子之)。  诸城市马庄乡近贤村(原名公...
  • 微积分中求和的算法
    • 2024-05-16 23:48:40
    • 提问者: 未知
    此问题语焉不详,不甚明了。如果我的理解没有错的话,你问的东西实际上与微积分无关。这是数学上的一个符号而已,表示求和。因为被求和的项可能非常多,写成一系列加号很不方便,所以采用这个符号来写。用这个符号要明确被加的项都是什么,通常有一个指标i来标明这一点,i=1表示i从1开始。一般来说,符号的右边会是一个i的函数,如果i是从1到n,则最后的结果是这个函数在1到n处的取值加起来。
  • 求助!求指南针版的**算法
    • 2024-05-16 19:11:10
    • 提问者: 未知
    **分布的意义我已知的有两种:1、是估算机构仓位(因为**数据失真严重,所以无用。...我是想研究研究**分布函数怎么搞的,也发现不同软件的**分布算法有很大差异什么...
汇率兑换计算器

热门推荐
热门问答
最新问答
推荐问答
新手帮助
常见问题
房贷计算器-九子财经 | 备案号: 桂ICP备19010581号-1 商务联系 企鹅:2790-680461

特别声明:本网为公益网站,人人都可发布,所有内容为会员自行上传发布",本站不承担任何法律责任,如内容有该作者著作权或违规内容,请联系我们清空删除。