今天在做项目的时候需要用到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)//公历转换成农历
在JavaScript中,我们可以创建一个自定义的类或函数来处理农历转换。这个类通常会包含以下功能: 1. **农历日期到公历日期的转换**:这个过程涉及到农历的月份、日期和年份与公历的对应转换。可以使用一些已知的...
例如,中国的传统节日如春节、中秋节等,都是按照阴历来确定的,因此,准确的阳历阴历转换对于这类应用至关重要。 总结来说,阳历阴历的转换涉及到天文学、历法学和编程技术,HTML文档中的实现可能利用JavaScript来...
公历转换农历的算法(JavaScript) 公历转换农历的算法是指将公历日期转换为农历日期的过程。公历是国际通用的日期系统,而农历则是中国传统的日期系统。农历的日期系统与公历不同,它的日期是根据月亮的周期变化而...
公历(阳历) 农历(阴历)转换,支持时间段从 1900-2100 如果需要更长的时间段,利用 generate.htm 生成的数据即可。 支持各种编程语言 C#,java,Objective-C,php,Python,javascript(nodejs),C/C++,ruby,swift,golang 等...
在给定的资源中,我们关注的是如何利用JavaScript实现农历,也称为阴历,的功能。农历是东亚地区传统日历系统,与公历不同,它基于月亮的相位变化,对中国的节日和传统有着重要影响。 "万年历"这个概念通常指的是...
改JavaScript控件可以将公历的时间计算转换为阳历
在JavaScript中实现农历转换涉及到对农历日历的理解和计算。农历是一种基于月亮周期的日历系统,与公历(阳历)不同,它不遵循固定的日期转换规则。在JavaScript中实现农历转换,通常需要考虑以下几个核心知识点: ...
在JavaScript中,`moment.js`或`date-fns`库可以帮助处理日期,`chinese-calendar`库则提供了农历转换功能。 4. **测试**:确保转换的准确性和一致性,需要编写大量的测试用例,包括常规日期、闰年、闰月、特殊日期...
在本项目中,我们主要探讨的是一个纯JavaScript实现的日历功能,它包含了农历转换、节日显示以及面向对象的设计思想。这个日历组件可以方便地在网页中多次调用,为用户提供了一个直观的时间管理工具。 首先,让我们...
"js农历日期.rar"可能是一个包含资源的压缩包,其中的"js农历日期.html"可能是展示或实现JavaScript农历日期转换的一个示例文件。下面将详细讨论JavaScript处理农历日期的相关知识点。 1. **JavaScript内置日期对象...
- 农历是一种阴阳历,结合了月相变化(阴历)和地球绕太阳的运动(阳历)来制定日期。一年分为12个月,但为了保持与季节的对应关系,会通过设置闰月来调整。 - 农历每个月有29或30天,取决于月亮的盈亏周期。 - ...
公历转换农历的算法及其JavaScript实现.txt
在JavaScript编程中,农历是一个常见的需求,特别...通过理解和应用以上知识点,开发者可以创建一个强大且易用的JavaScript农历库,满足不同项目的需要。同时,文档和示例代码对于提高库的可接受性和可维护性至关重要。
JavaScript实现农历转换的核心在于算法。首先,我们需要理解公历和农历之间的转换关系。公历是国际通用的日历系统,而农历则主要在中国、台湾、香港、澳门以及部分东南亚国家和地区使用。农历与公历之间的转换涉及到...
标题中的“javascript 日历 带农历 节气 节日”表明这是一个使用JavaScript编写的日历应用,具有显示农历、节气和节日的功能。在JavaScript编程中,实现这样的功能需要对日期对象有深入理解,同时还需要处理不同历法...
"Flex公历转农历算法"是一个专为Adobe Flex平台设计的类,用于将公历日期转换为中国的农历日期。这个类借鉴了C++版本的算法,并在Flex环境中进行了实现,使得开发人员能够方便地在ActionScript中处理农历日期。 1. ...
HTML和JavaScript是网页开发中的基础技术,而阳历与农历的转换则是许多应用程序中常见的功能,特别是在中国的互联网环境中。在给定的项目“html_one954_javascript_阳历农历互转_”中,我们可以深入理解如何使用...
本文将详细讨论如何在程序中实现阳历到阴历的转换,主要涉及C#和JavaScript两种编程语言。 首先,我们来理解阳历和阴历的基本概念。阳历是基于地球绕太阳公转周期的天文日历,一年大约365.24天,分为12个月。阴历则...