javascript中怎么获取农历程序代码

 

获取农历

农历月的天数是一个变数,有时是 29 天,有时是 30 天。

农历每月的第一天是月亮全黑的日子。

农历年由 24 个节气来确定,节气则由太阳的角度来确定。农历的第一个节气叫 雨水,定在太阳的角度为 330 度的日子。其余的 23 个节气分别定在太阳的角度 每变化 15 度的日子。下面的表格列出了 24 个节气的名称和定义:

命称    角度    公历日期      周期

立春     315     2月 4日

雨水     330     2月19日    29.8天

惊蛰     345     3月 6日

春分       0     3月21日    30.2天

清明      15     4月 5日

谷雨      30     4月20日    30.7天

立夏      45     5月 6日

夏满      60     5月21日    31.2天

芒种      75     6月 6日

夏至      90     6月22日    31.4天

小暑     105     7月 7日

大暑     120     7月23日    31.4天

立秋     135     8月 8日

处暑     150     8月23日    31.1天

白露     165     9月 8日

秋分     180     9月23日    30.7天

寒露     195    10月 8日

霜降     210    10月24日    30.1天

立冬     225    11月 8日

小雪     240    11月22日    29.7天

大雪     255    12月 7日

冬至     270    12月22日    29.5天

小寒     285     1月 6日

大寒     300     1月20日    29.5天

24 个节气中有 12 个是主节气:雨水,春分,谷雨,夏满,夏至,大暑,处暑, 秋分,霜降,小雪,冬至,大寒。

农历年跟天文年相差较大。农历常年有十二个农历月,有 353,354,或者 355 天,比天文年少大约 11 天。为了跟天文年同步,每隔三个农历常年左右,必需设 一闰年。闰年有十三个月,添加的这个月叫闰月。

农历十二个月的名称分别为:正月,二月,三月,四月,五月,六月,七月,八 月,九月,十月,冬月,腊月。

农历闰年闰月的确定比较难,闰月农历算法有两条:

•一:冬至必须落在农历冬月。如果落不上,腊月之前就要添上一个月,成为闰 年。
•二:如果是闰年,冬月后边第一个不含主节气的月份定为闰月。闰月使用前一 月份的名称。
农历年以 60 年为一周期,每年的名称由 10 个天干的一个字和 12 个地支的一 个字排列而成。

10 天干为:

•甲,乙,丙,丁,戊,己,庚,辛,壬,癸。
12 地支 为:

•子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥。
•12 地支有 12 动物生肖 与其对应:
鼠,牛,虎,兔,龙,蛇,马,羊,猴,鸡,狗,猪。
跟据历史记载,农历年已经经过了 78 个周期。今年,公历2010 年,是第 79 个周期的第 28 年,也就是农历第 4707 年

 代码如下 复制代码

<script type="text/javascript">
<!-- 
var now=new Date(); 
// -->
</script>     
<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);     
   
//==== 传回农历 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 , 没闰传回 0     
function 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 .moncyl     
function lunar(objdate) {     
var i, leap=0, temp=0;     
var basedate = new Date(1900,0,31);     
var offset   = (objdate - basedate)/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     
}     
function cday(m,d){     
var nstr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');     
var nstr2 = new Array('初','十','廿','卅',' ');     
var s;     
if (m>10){s = '十'+nstr1[m-10]} else {s = nstr1[m]} s += '月'    
if (s=="十二月") s = "腊月";     
if (s=="一月") s = "正月";     
switch (d) {     
case 10:s += '初十'; break;     
case 20:s += '二十'; break;     
case 30:s += '三十'; break;     
default:s += nstr2[Math.floor(d/10)]; s += nstr1[d%10];     
}     
return(s);     
}     
function solarday2(){     
var sdobj = new Date(now.getFullYear(),now.getMonth(),now.getDate());     
var ldobj = new lunar(sdobj);     
var cl = '';      
//农历bb'+(cld[d].isleap?'闰 ':' ')+cld[d].lmonth+' 月 '+cld[d].lday+' 日     
var tt = cday(ldobj.month,ldobj.day);     
document.write(now.getFullYear()+"年"+(now.getMonth()+1)+"月"+now.getDate()+"日 农历"+tt+"");     
}     
solarday2();     
// -->
</script>

时间: 2024-09-14 09:22:58

javascript中怎么获取农历程序代码的相关文章

JavaScript中校验银行卡号的实现代码_javascript技巧

1.先引入jquery.js 2.接着引入luhmCheck.js //银行卡号Luhm校验 3.看下面的案例: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml&

JavaScript中removeChild 方法开发示例代码_javascript技巧

1. 概述 删除后的节点虽然不在文档树中了,但其实它还在内存中,可以随时再次被添加到别的位置. 当你遍历一个父节点的子节点并进行删除操作时,要注意,children属性是一个只读属性,并且它在子节点变化时会实时更新 // 拿到待删除节点: var self = document.getElementById('to-be-removed'); // 拿到父节点: var parent = self.parentElement; // 删除: var removed = parent.remove

applicationInfo中如何获取应用程序启动Activity的name

问题描述 applicationInfo中如何获取应用程序启动Activity的name private static void getAppInfo(ApplicationInfo applicationInfo) { String packageName = applicationInfo.packageName;// 包名 String activityName = applicationInfo.name; // 获得该应用程序的启动Activity的name String appLab

JavaScript中实现Map的示例代码_javascript技巧

不废话了,直接贴代码了. 代码一: var map=new Map(); map.put("a","A");map.put("b","B");map.put("c","C"); map.get("a"); //返回:A map.entrySet() // 返回Entity[{key,value},{key,value}] map.containsKey('kevin'

javascript中可以直接写php代码

 一.在javascript中嵌入php代码 .javascript若是通过js文件包含进来的,那么js文件中也可以直接写php代码,只不过包含js文件是扩展名要改成php,如: <script herf="js/demo.js.php"></script> 二.javascript函数参数的默认值 c语言中可以通过这样来设置默认参数: void foo(int a, int b = 1, bool c = false); 但是javascript却不能这样:

javascript中字符串的定义示例代码

 javascript中字符串如何定义,下面有个不错的示例,大家可以学习下  代码如下: <html>  <head>  <title>javascript中字符串的定义</title>  <script>  //定义字符串  //第一种  var str = new Array();  alert(str);//空字符  //第二种  var str2 = new Array("hello");  alert(str2);/

Javascript中暂停功能的实现代码_javascript技巧

复制代码 代码如下: <script language="javascript"> /*Javascript中暂停功能的实现 Javascript本身没有暂停功能(sleep不能使用)同时 vbscript也不能使用doEvents,故编写此函数实现此功能. javascript作为弱对象语言,一个函数也可以作为一个对象使用. 比如: function Test(){  alert("hellow");  this.NextStep=function()

Python中删除文件的程序代码_python

Python是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.Python 具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用.它具有简单.易学.免费.开源.可移植性.解释性.面向对象.可扩展性.可嵌入性以及丰富的库等特性,目前的应用范围也非常广泛,如系统编程.图像处理.数据库编程等方面. Python开发者可以使用文本编辑器(如Windows的记事本等)或者专业的IDE(集成开发环境)来编写程序代码.IDE使得开发者可

php中两日期比较程序代码

 代码如下 复制代码 <?php /*   * 作者:不知道作者是谁   * 日期:2008-4-13   * 功能:计算两个日期的时间差   * 备注:基本上没有修改程序代码,仅将书写规范了下,以及做了注释  // 曼查罗   */    // 定义要比较的两个日期 $Date_1="2008-7-15"; $Date_2="2006-7-14";   // 将日期化成数组,以便制作时间戳 $Date_List_1=explode("-"