万年历中24节气怎么算出来,又固定的公式吗? 二十四节气的时段是怎么计算的?是在节气日之前还是之后的半个月...

作者&投稿:索君 (若有异议请与网页底部的电邮联系)
阳历容易,不要公式,记住二十四节气歌即可:春雨惊春清谷天,夏满芒夏暑相连,秋处露秋寒霜降,冬雪雪冬小大寒,上半年来6,21,下半年来8,23,一月两节总不变,最多相差一两天。

JS万年历中如何求某天的节气~

同样的函数,这个却不能用第402行,按下某日期显示当前节气




<META


<META content="Gregorian Solar Calendar and Chinese Lunar Calendar"
name=description>





var conWeekend = 3;
var lunarInfo=new Array(
0x4bd8,0x4ae0,0xa570,0x54d5,0xd260,0xd950,0x5554,0x56af,0x9ad0,0x55d2,
0x4ae0,0xa5b6,0xa4d0,0xd250,0xd295,0xb54f,0xd6a0,0xada2,0x95b0,0x4977,
0x497f,0xa4b0,0xb4b5,0x6a50,0x6d40,0xab54,0x2b6f,0x9570,0x52f2,0x4970,
0x6566,0xd4a0,0xea50,0x6a95,0x5adf,0x2b60,0x86e3,0x92ef,0xc8d7,0xc95f,
0xd4a0,0xd8a6,0xb55f,0x56a0,0xa5b4,0x25df,0x92d0,0xd2b2,0xa950,0xb557,
0x6ca0,0xb550,0x5355,0x4daf,0xa5b0,0x4573,0x52bf,0xa9a8,0xe950,0x6aa0,
0xaea6,0xab50,0x4b60,0xaae4,0xa570,0x5260,0xf263,0xd950,0x5b57,0x56a0,
0x96d0,0x4dd5,0x4ad0,0xa4d0,0xd4d4,0xd250,0xd558,0xb540,0xb6a0,0x95a6,
0x95bf,0x49b0,0xa974,0xa4b0,0xb27a,0x6a50,0x6d40,0xaf46,0xab60,0x9570,
0x4af5,0x4970,0x64b0,0x74a3,0xea50,0x6b58,0x5ac0,0xab60,0x96d5,0x92e0,
0xc960,0xd954,0xd4a0,0xda50,0x7552,0x56a0,0xabb7,0x25d0,0x92d0,0xcab5,
0xa950,0xb4a0,0xbaa4,0xad50,0x55d9,0x4ba0,0xa5b0,0x5176,0x52bf,0xa930,
0x7954,0x6aa0,0xad50,0x5b52,0x4b60,0xa6e6,0xa4e0,0xd260,0xea65,0xd530,
0x5aa0,0x76a3,0x96d0,0x4afb,0x4ad0,0xa4d0,0xd0b6,0xd25f,0xd520,0xdd45,
0xb5a0,0x56d0,0x55b2,0x49b0,0xa577,0xa4b0,0xaa50,0xb255,0x6d2f,0xada0,
0x4b63,0x937f,0x49f8,0x4970,0x64b0,0x68a6,0xea5f,0x6b20,0xa6c4,0xaaef,
0x92e0,0xd2e3,0xc960,0xd557,0xd4a0,0xda50,0x5d55,0x56a0,0xa6d0,0x55d4,
0x52d0,0xa9b8,0xa950,0xb4a0,0xb6a6,0xad50,0x55a0,0xaba4,0xa5b0,0x52b0,
0xb273,0x6930,0x7337,0x6aa0,0xad50,0x4b55,0x4b6f,0xa570,0x54e4,0xd260,
0xe968,0xd520,0xdaa0,0x6aa6,0x56df,0x4ae0,0xa9d4,0xa4d0,0xd150,0xf252,
0xd520);
var solarMonth=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至");
var sTermInfo = new Array(0,21208,42467,63836,85337,107014,128867,150921,173149,195551,218072,240693,263343,285989,308563,331033,353350,375494,397447,419210,440795,462224,483532,504758);
var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十');
var nStr2 = new Array('初','十','廿','卅',' ')
var monthName = new Array("1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月");

var timeData = {
"Asia 亚洲": { //----------------------------------------------
"Brunei 文莱 ":["+0800","","斯里巴加湾市"],
"Burma 缅甸 ":["+0630","","仰光"],
"Cambodia 柬埔寨 ":["+0700","","金边"],
"China 中国 ":["+0800","","北京、重庆、上海、天津"],
"China(HK,Macau) 中国 ":["+0800","","香港、澳门特区"],
"China(TaiWan) 中国 ":["+0800","","台北、高雄"],
"China(Urumchi) 中国 ":["+0700","","乌鲁木齐"],
"Indonesia 印尼 ":["+0700","","雅加达"],

"Poland 波兰 ":["+0100","","华沙"],

"国际换日线 ":["-1200","","国际换日线"]
}
};

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));
}

function leapDays(y) {
if(leapMonth(y)) return( (lunarInfo[y-1899]&0xf)==0xf? 30: 29);
else return(0);
}

function leapMonth(y) {
var lm = lunarInfo[y-1900] & 0xf;
return(lm==0xf?0:lm);
}

function monthDays(y,m) {
return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 );
}

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; i0; 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; i0; 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 solarDays(y,m) {
if(m==1)
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
else
return(solarMonth[m]);
}

function cyclical(num) {
return(Gan[num%10]+Zhi[num%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) + sTermInfo[n]*60000 ) + Date.UTC(1900,0,6,2,5) );
return(offDate.getUTCDate());
}
function strDate(objDate)
{
var tY = objDate.getFullYear();
var tM = objDate.getMonth()+1;
var tD = objDate.getDate();
var tH = objDate.getHours();
var s;

s=+tY+"年"+tM+"月"+tD+"日"+tH+"时";
return s;

}
function GetTerm(objDate) {
var year=objDate.getFullYear();
var d;
var i;

for (i=1;i<23;i+=2) {
d=sTerm(year,i);
if (objDate<d) break;
}
if (i==1) i=23;
return i;
}

function calendar(y,m) {

var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3, BMjqFtvl;
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日星期几

if(m<2) cY=cyclical(y-1900+36-1);
else cY=cyclical(y-1900+36);
var term2=sTerm(y,2); //立春日期

var firstNode = sTerm(y,m*2) //返回当月「节」为几日开始
cM = cyclical((y-1900)*12+m+12);
var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;

for(var i=0;i<this.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.isLeap; //农历是否闰月
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);
this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
lY, lM, lD++, lL,
cY ,cM, cD );
}

sFtv = new Array(
"0101*新年元旦",
"0312 植树节 孙中山逝世纪念日",
"0314 国际警察日")
for(i in sFtv)
if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' ';
if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red';
}
}
function cMonth(d){
var s;

switch (d) {
case 1: s = '正'; break;
case 11: s = '冬'; break;
case 12: s = '腊'; break;
break;
default :
s = nStr1[d%12];
}
return(s);
}
function cDay(d){
var s;

switch (d) {
case 10: s = '初十'; break;
case 20: s = '二十'; break;
break;
case 30: s = '三十'; break;
break;
default :
s = nStr2[Math.floor(d/10)];
s += nStr1[d%10];
}
return(s);
}
var cld;

function drawCld(years,months) {
var i,sD,s,size;
cld = new calendar(years,months);

if(years>1874 && years<1909) yDisplay = '光绪' + (((years-1874)==1)?'元':years-1874);
if(years>1908 && years<1912) yDisplay = '宣统' + (((years-1908)==1)?'元':years-1908);
if(years>1911 && years<1950) yDisplay = '民国' + (((years-1911)==1)?'元':years-1911);
if(years>1948) yDisplay = '建国' + (((years-1949)==1)?'元':years-1949);

GZ.innerHTML = yDisplay+'年'+' '+Animals[(years-4)%12]+'年[农历' + cyclical(years-1900+36)+'年]';
for(i=0;i<42;i++) {
sObj=eval('SD'+ i);
lObj=eval('LD'+ i);
sObj.className = '';
sD = i - cld.firstWeek;
if(sD>-1 && sD<cld.length) { //日期内
sObj.innerHTML = sD+1;
if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日颜色
if(cld[sD].lDay==1) //显示农历月
lObj.innerHTML = ''+(cld[sD].isLeap?'闰':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'';
else //显示农历日
lObj.innerHTML = cDay(cld[sD].lDay);

s=cld[sD].solarFestival;
if(s.length>0) {//公历节日
size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
if(s.length>size+2) s = s.substr(0, size)+'...';
s=(s=='黑色星期五')?s.fontcolor('black'):s.fontcolor('blue');
}

else {
s=cld[sD].lunarFestival;
if(s.length>0) { //农历节日
if(s.length>6) s = s.substr(0, 4)+'...';
s = s.fontcolor('red');
}
else { //廿四节气
s=cld[sD].solarTerms;
if(s.length>0) s = s.fontcolor('limegreen');
}
}
if(s.length>0) lObj.innerHTML = s;

}
else { //非日期
sObj.innerHTML = '';
lObj.innerHTML = '';
}
}
}
function changeCld() {
var y,m;
y=CLD.years.selectedIndex+1900;
m=CLD.months.selectedIndex;
drawCld(y,m);
}

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,sjqFtvl;
var sObj=eval('SD'+ v);
var d=sObj.innerHTML-1;
if(sObj.innerHTML!='') {
sObj.style.cursor= 'help';
if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
festival = '';
else
festival = ''+
''+cld[d].solarTerms + ' ' +''+
'';
s= '' +
''+
cld[d].sYear+'年'+cld[d].sMonth+'月'+cld[d].sDay+'日 星期'+cld[d].week+''+
'农历'+cld[d].cYear+'年'+(cld[d].isLeap?' 闰':' ')+cMonth(cld[d].lMonth)+'月'+cDay(cld[d].lDay)+''+
''+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日'+
''+ festival +'';
document.all["detail"].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 jieqi(objDate) {
var year=objDate.getFullYear();
var d; var i; var m
for (i=0;i<24;i+=1) {
d=sTerm(year,i);
m=i
if (objDate<=d) break;
} return m
}
function mDown(V) {
var sObj=eval('SD'+ V);
var D=sObj.innerHTML-1;
var ya=cld[D].sYear;//获得当前公历日期!
var ma=cld[D].sMonth;
var da=cld[D].sDay;
var Today=new Date(ya,ma,da,0,0,0)
m=jieqi(Today)
document.all.s3.value=m
}
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.length;
return unescape(document.cookie.substring(offset, end));
}
else return('');
}
else return('');
}
function initialize() {
dStyle = detail.style;
CLD.years.selectedIndex=tY-1900;
CLD.months.selectedIndex=tM;
drawCld(tY,tM);
}


.todyaColor {BACKGROUND-COLOR: aqua}


<DIV id=detail
style="Z-INDEX: 3; FILTER: shadow(color=#333333,direction=135); WIDTH: 140px; POSITION: absolute; HEIGHT: 120px">






122







<FONT style="FONT-SIZE: 9pt"
color=#9900CC size=3> 公元
for(i=1900;i'+i) 年
for(i=1;i'+i) 月
第 个节气
for(i=1;i'+i) 时
日SUN
一MON
二TUE
三WED
四THR
五FRI
六SAT
<!--
var gNum
for(i=0;i<6;i++) {
document.write('')
for(j=0;j<7;j++) {
gNum = i*7+j
document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()" onMouseDown="mDown(' + gNum +')"')
document.write('><font id="SD' + gNum +'" size=5 face="Arial Black"')
if(j == 0) document.write(' color=red')
if(j == 6)
if(i%2==1) document.write(' color=red')
else document.write(' color=green')
document.write(' TITLE=""> ')
}
document.write('')
}
//-->

二十四节气计算公式如下:[Y*D+C]-L
公式解读:年数的后2位乘0.2422加3.87取整数减闰年数。
21世纪C值=3.87,22世纪C值=4.15。举例说明:2058年立春日期的计算步骤[58×.0.2422+3.87]-[(58-1)/4]=17-14=3,则2月3日立春。
二十四节气(The 24 Solar Terms)是指中国农历中表示季节变迁的24个特定节令,是根据地球在黄道(即地球绕太阳公转的轨道)上的位置变化而制定的,每一个分别相应于地球在黄道上每运动15°所到达的一定位置。
二十四节气是中国先秦时期开始订立、汉代完全确立的用来指导农事的补充历法,是通过观察太阳周年运动,认知一年中时令、气候、物候等方面变化规律所形成的知识体系。它把太阳周年运动轨迹划分为24等份,每一等份为一个节气,始于立春,终于大寒,周而复始,既是历代官府颁布的时间准绳,也是指导农业生产的指南针。

万年历中24节气怎么算出来,又固定的公式吗?
答:阳历容易,不要公式,记住二十四节气歌即可:春雨惊春清谷天,夏满芒夏暑相连,秋处露秋寒霜降,冬雪雪冬小大寒,上半年来6,21,下半年来8,23,一月两节总不变,最多相差一两天。参考资料:民歌,民谣

二十四节气是按阳历还是阴历划分的?
答:二十四节气,是上古时代人们根据地球在黄道(即地球绕太阳公转的轨道)上的位置变化而制定的,每一个分别相应于太阳在黄道上每运动15°所到达的一定位置,而制定的气候规律。干支历以地球围绕太阳公转的一个周期作为一个轮回,基本概括了一年中不同时节太阳在黄道上位置的不同、寒来暑往的准确时间、降雨...

二十四节气是按阳历还是阴历划分的?
答:按阳历划分 二十四节气反映了太阳对地球产生的影响,属阳历范畴。二十四节气是通过观察太阳周年运动,认知一年中时令、气候、物候等方面变化规律所形成的知识体系。它不仅在农业生产方面起着指导作用,同时还影响着古人的衣食住行,甚至是文化观念。现在使用的农历吸收了干支历的节气成分作为历法补充,并通过...

未来日历中24节气是如何推算的?
答:二十四节气反映了太阳的周年视运动,所以节气在现行的公历中日期基本固定,上半年在6日、21日,下半年在8日、23日,前后不差1~2天。二十四节气算法通用公式 通用公式=[Y×D+C]-L Y=年代数、D=0.2422、L=闰年数、C取决于节气和年份。本世纪立春的C值=4.475,求2011年的立春日期如下:[...

请问24节气的具体时间计算方法是怎么的呢?
答:你想的是对的。二十四节气是世界上“最阳历”的阳历。它完全直接按照太阳运行(其实是地球公转运行)规律制定的。直观上看就是每个节气与定点太阳高度一一对应。二十四节气以“两至两分”为骨架。平均插入另外20个节气构成。用现代科学眼光来看就是每个节气都对应地球绕日公转轨道上的一个精确点。所以你...

中国24节气应该按照阴历还是阳历算?分别是几月几日?
答:春雨惊春清谷天,夏满芒夏暑相连。秋处露秋寒霜降,冬雪雪冬小大寒。上半年是六廿一,下半年是八廿三。解释一下,每个公历月两个节气,上半年是六号和二十一号,下半年是八号和廿三号,最多不差三两天。刚巧今天就是立春,公历2月3日。

二十四节气按照阳历划分还是按照阴历划分?
答:二十四节气是按照阳历划分的。现行的二十四节气,是通过观察太阳周年运动,认知一年中时令、气候、物候等方面变化规律所形成的知识体系。它将太阳周年运动轨迹划分为24等份,分别相应于太阳在黄道上每运动15°所到达的一定位置,每一等份为一个“节气”。

二十四节气的交接(精确到秒)
答:二十四节气的交接一般精确到日,而不计算秒,因为地球公转的偏转,节气交替会有细微变化。一年有二十四个节气,计十二个节和十二个气。即一个月之内有一节一气,每两节气相距,平均约三十天又十分之四,而阴历每月之日数.则为二十九天半,故约每三十四个月,必遇有两月仅有节而无气、及有气而...

二十四节气与阳历的关系
答:并且给每等份取了个专有名称,这就是二十四节气。到战国后期成书的《吕氏春秋》“十二月纪”中,就有了立春、春分、立夏、夏至、立秋、秋分、立冬、冬至等八个节气名称。这八个节气,是二十四个节气中最重要的节气。这八个节气标示出季节的转换,清楚地划分出一年的四季。后来到了《淮南子》一书的时候,就有了和...

24节气都有那些,分别在几月
答:二、24节气的月份时间 立春:斗指寅;太阳黄经为315度。立是开始的意思,立春就是春季的开始。公历2月3-5日交节。雨水:斗指壬;太阳黄经为330°。降雨开始,雨量渐增。公历2月18-20日交节。惊蛰:斗指丁;太阳黄经为345°。蛰是藏的意思。惊蛰是指春雷乍动,惊醒了蛰伏在土中冬眠的动物。