今天在做项目的时候需要用到JavaScript农历转换算法,从网上搜索并整理了一下,重新写出一个JavaScript农历转换类,不敢独占,特此与大家分享。
- /*!
- * LunarDate v1.0.0
- * http://www.clanfei.com/
- *
- * Author: Lanfei
- * Date: 2013-1-24
-
*/
-
varLunarDate={
-
madd:newArray(0,31,59,90,120,151,181,212,243,273,304,334),
-
HsString:'甲乙丙丁戊己庚辛壬癸',
-
EbString:'子丑寅卯辰巳午未申酉戌亥',
-
NumString:"一二三四五六七八九十",
-
MonString:"正二三四五六七八九十冬腊",
-
CalendarData:newArray(0xA4B,0x5164B,0x6A5,0x6D4,0x415B5,0x2B6,0x957,0x2092F,0x497,0x60C96,0xD4A,0xEA5,0x50DA9,0x5AD,0x2B6,0x3126E,0x92E,0x7192D,0xC95,0xD4A,0x61B4A,0xB55,0x56A,0x4155B,0x25D,0x92D,0x2192B,0xA95,0x71695,0x6CA,0xB55,0x50AB5,0x4DA,0xA5B,0x30A57,0x52B,0x8152A,0xE95,0x6AA,0x615AA,0xAB5,0x4B6,0x414AE,0xA57,0x526,0x31D26,0xD95,0x70B55,0x56A,0x96D,0x5095D,0x4AD,0xA4D,0x41A4D,0xD25,0x81AA5,0xB54,0xB6A,0x612DA,0x95B,0x49B,0x41497,0xA4B,0xA164B,0x6A5,0x6D4,0x615B4,0xAB6,0x957,0x5092F,0x497,0x64B,0x30D4A,0xEA5,0x80D65,0x5AC,0xAB6,0x5126D,0x92E,0xC96,0x41A95,0xD4A,0xDA5,0x20B55,0x56A,0x7155B,0x25D,0x92D,0x5192B,0xA95,0xB4A,0x416AA,0xAD5,0x90AB5,0x4BA,0xA5B,0x60A57,0x52B,0xA93,0x40E95),
-
Year:null,
-
Month:null,
-
Day:null,
-
TheDate:null,
-
GetBit:function(m,n){
-
return(m>>n)&1;
-
},
-
e2c:function(){
-
this.TheDate=(arguments.length!=3)?newDate():newDate(arguments[0],arguments[1],arguments[2]);
-
vartotal,m,n,k;
-
varisEnd=false;
-
vartmp=this.TheDate.getFullYear();
-
total=(tmp-1921)*365+Math.floor((tmp-1921)/4)+this.madd[this.TheDate.getMonth()]+this.TheDate.getDate()-38;
-
if(this.TheDate.getYear()%4==0&&this.TheDate.getMonth()>1){
-
total++;
-
}
-
for(m=0;;m++){
-
k=(this.CalendarData[m]<0xfff)?11:12;
-
for(n=k;n>=0;n--){
-
if(total<=29+this.GetBit(this.CalendarData[m],n)){
-
isEnd=true;
-
break;
-
}
-
total=total-29-this.GetBit(this.CalendarData[m],n);
-
}
-
if(isEnd)
-
break;
-
}
-
this.Year=1921+m;
-
this.Month=k-n+1;
-
this.Day=total;
-
if(k==12){
-
if(this.Month==Math.floor(this.CalendarData[m]/0x10000)+1){
-
this.Month=1-this.Month;
-
}
-
if(this.Month>Math.floor(this.CalendarData[m]/0x10000)+1){
-
this.Month--;
-
}
-
}
-
},
-
GetcDateString:function(){
-
vartmp="";
-
tmp+=this.HsString.charAt((this.Year-4)%10);
-
tmp+=this.EbString.charAt((this.Year-4)%12);
-
tmp+="年 ";
-
if(this.Month<1){
-
tmp+="(闰)";
-
tmp+=this.MonString.charAt(-this.Month-1);
-
}else{
-
tmp+=this.MonString.charAt(this.Month-1);
-
}
-
tmp+="月";
-
tmp+=(this.Day<11)?"初":((this.Day<20)?"十":((this.Day<30)?"廿":"三十"));
-
if(this.Day%10!=0||this.Day==10){
-
tmp+=this.NumString.charAt((this.Day-1)%10);
-
}
-
returntmp;
-
},
-
GetLunarDay:function(solarYear,solarMonth,solarDay){
-
if(solarYear<1921||solarYear>2020){
-
return"";
-
}else{
-
solarMonth=(parseInt(solarMonth)>0)?(solarMonth-1):11;
-
this.e2c(solarYear,solarMonth,solarDay);
-
returnthis.GetcDateString();
-
}
-
}
- };
调用方法:
-
LunarDate.GetLunarDay(2013,1,24);
=======================签 名 档=======================
原文地址(我的博客):http://www.clanfei.com/2013/01/1683.html
欢迎访问交流,至于我为什么要多弄一个博客,因为我热爱前端,热爱网页,我更希望有一个更加自由、真正属于我自己的小站,或许并不是那么有名气,但至少能够让我为了它而加倍努力。。
=======================签 名 档=======================
分享到:
相关推荐
为解决Web前端的农历转换,现将相关的前端转换代码共享给大家,JavaScript公历转换、农历转换、阴历转换、阳历转换
调用简单,下拉传一日期加类型即可转换日期的类型,如: CalConvert(new Date(2010,3,19), false) //农历转换为公历 CalConvert(new Date(2010,3,19), true)//公历转换成农历
公历(阳历) 农历(阴历)转换,支持时间段从 1900-2100 如果需要更长的时间段,利用 generate.htm 生成的数据即可。 支持各种编程语言 C#,java,Objective-C,php,Python,javascript(nodejs),C/C++,ruby,swift,golang 等...
改JavaScript控件可以将公历的时间计算转换为阳历
公历转换农历的算法(JavaScript)是一个比较困难的东西,公历日期程序大家都会写,看看阳历的吧
公历转换农历的算法及其JavaScript实现.txt
农历是日常生活中不可或缺的一部分,它与人类的生活息息相关,从某种程度上说,它一直伴随着我们,今天的任务是JavaScript转换农历类的实现,感兴趣的你可以千万不要错过,希望本文对你有所帮助
公历(阳历)农历(阴历)转换,支持时间段从1900-2100如果需要更长的时间段,利用generate.htm生成的数据即可。支持各种编程语言C#,java,Objective-C,php,Python,javascript(nodejs),C / C ++,ruby,...
下面小编就为大家带来一篇Javascript农历与公历相互转换的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
农历转公历,公历转农历,做日历的朋友会需要的东西能转换1936-2031年的日期,支持农历转公历,公历转农历,经过简单的修改就可以符合自己的开发要求!
公历与农历转换 Quick Examples 公历转农历 var lunar = require('lunar'); var date = lunar(new Date(2014, 9, 24)); console.log(date.toJSON()); console.log(date.toString()); // 农历甲午年闰九月初一 农历转...
实例043 应用JavaScript实现指定尺寸无边框无滚动条窗口 67 1.8 水平导航条应用 69 实例044 图片按钮导航条 69 实例045 导航条的动画效果 71 实例046 不用图片实现质感导航条 72 1.9 下拉菜单式导航条 73 实例047 二...
本文实例讲述了JavaScript实现公历转农历功能。分享给大家供大家参考,具体如下: 完整代码(该源码使用在线工具http://tools.jb51.net/code/js进行了格式化处理,以便于读者阅读): <!DOCTYPE ...
4.3 带有农历的日历 65 4.4 标题栏显示日期 68 4.5 标题栏显示时间 69 4.6 不同时间的不同问候 69 4.7 记录进入网站的时间 70 4.8 页面的最后更新日期 71 4.9 节日倒计时 72 4.10 定时打开指定页面 72 4.11 ...
NW-LunarCalender 一个由 JavaScript 和 Node-Webkit 实现的农历日历。 它可以在 Mac/Windows/Linux 上运行。 有效的日月转换时间为公元 1583 年至公元 2100 年。截屏跑步方法一:确保node-webkit文件夹中没有...
类型转换类 TypeParse.cs 各种类型互相转换,如int string bool等 用户实用类 User.cs 登陆,退出时候身份加密或解除方式 验证码类 ValidateImage.cs 图片验证码 验证实用类 ValidateUtils.cs 数据类型,字符串功能,IP,...
本文为大家分享了一段js显示阴历(农历)和当前日期的关键性代码,供大家参考,具体内容如下 var CalendarData=new Array(100); var madd=new Array(12); var tgString="甲乙丙丁戊己庚辛壬癸"; var dzString="子丑...
5.5.htm 显示农历日期 5.6.htm 温度计样式时钟 5.7.htm 位置固定的时钟 第6章(\cha06) 6.1.htm HTML事件绑定 6.2.htm 非标准事件绑定 6.3.htm 事件处理器...