大家一起讨论一下关于控制农历时间的问题(100分)

  • 主题发起人 主题发起人 wingfly
  • 开始时间 开始时间
W

wingfly

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在研究时间方面的操作,遇到一些关于农历时间的问题
1、公历和农历有没有通用的换算算法
2、节气怎么确定
3、怎么确定闰月
4、有没有这方面的专题。
如果你还有这方面的问题,也请一起提出
 
谁能说明一下,谢谢
 
参考一下‘万年历’
 
听说日历每60年一轮,60年前的日历到今天一模一样,不知道是不是,你可以查一下万年历
 
我有用ASP作的计算农历的代码,不知道你是否需要,看懂了,用Delphi也一样编写,
 
给你一个好东东自己看吧,很简单!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD><TITLE>中华农历</TITLE>
<META
content="农历
阳历
月历
节日
时区
节气
八字
干支
生肖
gregorian solar
chinese lunar
calendar;"
name=keywords>
<META content=All name=robots>
<META content="gregorian solar calendar and chinese lunar calendar"
name=description>
<META content="text/html
charset=gb2312" http-equiv=Content-Type>
<SCRIPT language=JavaScript>
function click()
{

if (event.button==2)
{
// return (0);
alert('欢迎使用中华农历') ;
}
}

document.onmousedown=click

</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)

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("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");


var sFtv = new Array(
"0101*元旦",
"0214 情人节",
"0308 妇女节",
"0312 植树节",
"0315 消费者权益日",
"0317 St. Patrick's",
"0401 愚人节",
"0402 会平生日",
"0501 劳动节",
"0504 青年节",
"0512 护士节",
"0512 茵生日",
"0601 儿童节",
"0614 Flag Day",
"0701 建党节 香港回归纪念",
"0703 炎黄在线诞辰",
"0718 托普诞辰",
"0801 建军节",
"0808 父亲节",
"0909 毛泽东逝世纪念",
"0910 教师节",
"0928 孔子诞辰",
"1001*国庆节",
"1006 老人节",
"1024 联合国日",
"1112 孙中山诞辰纪念",
"1220 澳门回归纪念",
"1225 我的生日 Christmas Day ",
"1226 毛泽东诞辰纪念")


var lFtv = new Array(
"0101*春节",
"0115 元宵节",
"0505 端午节",
"0707 七夕情人节",
"0715 中元节",
"0815 中秋节",
"0909 重阳节",
"1010 老蒋的生日",
"1208 腊八节",
"1224 小年",
"0100*除夕")


var wFtv = new Array(
"0131 Martin Luther King Day",
"0231 President's Day",
"0520 母亲节",
"0530 Armed Forces Day",
"0531 Victoria Day",
"0716 合作节",
"0730 被奴役国家周",
"0811 Civic Holiday",
"0911 Labor Holiday",
"1021 Columbus Day",
"1144 Thanksgiving")


function lYearDays(y) {
var i, sum = 348
for(i=0x8000
i>0x8
i>>=1) sum += (lunarInfo[y-1900] &amp
i)? 1: 0
return(sum+leapDays(y))
}


function leapDays(y) {
if(leapMonth(y)) return((lunarInfo[y-1900] &amp
0x10000)? 30: 29)
else return(0)
}

function leapMonth(y) {
return(lunarInfo[y-1900] &amp
0xf)
}

function monthDays(y,m) {
return( (lunarInfo[y-1900] &amp
(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
i<2050 &amp;&amp
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 &amp;&amp
offset>0
i++) {

if(leap>0 &amp;&amp
i==(leap+1) &amp;&amp
this.isLeap==false)
{ --i
this.isLeap = true
temp = leapDays(this.year)
}
else
{ temp = monthDays(this.year, i)
}


if(this.isLeap==true &amp;&amp
i==(leap+1)) this.isLeap = false

offset -= temp
if(this.isLeap == false) this.monCyl ++
}

if(offset==0 &amp;&amp
leap>0 &amp;&amp
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) &amp;&amp
(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;
this.sMonth = sMonth;
this.sDay = sDay;
this.week = week;
this.lYear = lYear;
this.lMonth = lMonth;
this.lDay = lDay;
this.isLeap = isLeap;
this.cYear = cYear;
this.cMonth = cMonth;
this.cDay = cDay;

this.color = '';

this.lunarFestival = ''
//农历节日
this.solarFestival = ''
//国历节日
this.solarTerms = ''
//节气

}

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 calendar(y,m) {

var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2
var lDPOS = new Array(3)
var n = 0
var firstLM = 0

sDObj = new Date(y,m,1) //当月一日日期

this.length = solarDays(y,m) //国历当月天数
this.firstWeek = sDObj.getDay() //国历当月1日星期几


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
}

//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
this = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
lY, lM, lD++, lL,
cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )


if((i+this.firstWeek)%7==0) this.color = 'red' //周日颜色
if((i+this.firstWeek)%14==13) this.color = 'red' //周休二日颜色
}

tmp1=sTerm(y,m*2 )-1
tmp2=sTerm(y,m*2+1)-1
this[tmp1].solarTerms = solarTerm[m*2]
this[tmp2].solarTerms = solarTerm[m*2+1]
if(m==3) this[tmp1].color = 'red' //清明颜色

for(i in sFtv)
if(sFtv.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'
}

for(i in wFtv)
if(wFtv.match(/^(/d{2})(/d)(/d)([/s/*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
tmp1=Number(RegExp.$2)
tmp2=Number(RegExp.$3)
this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '
}

//农历节日
for(i in lFtv)
if(lFtv.match(/^(/d{2})(.{2})([/s/*])(.+)$/)) {
tmp1=Number(RegExp.$1)-firstLM
if(tmp1==-11) tmp1=1
if(tmp1 >=0 &amp;&amp
tmp1<n) {
tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1
if( tmp2 >= 0 &amp;&amp
tmp2<this.length) {
this[tmp2].lunarFestival += RegExp.$4 + ' '
if(RegExp.$3=='*') this[tmp2].color = 'red'
}
}
}

//黑色星期五
if((this.firstWeek+12)%7==5)
this[12].solarFestival += '黑色星期五 '

//今日
if(y==tY &amp;&amp
m==tM) this[tD-1].isToday = true;

}

//====================== 中文日期
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(SY,SM) {
var i,sD,s,size;
cld = new calendar(SY,SM);

if(SY>1874 &amp;&amp
SY<1909) yDisplay = '光绪' + (((SY-1874)==1)?'元':SY-1874)
if(SY>1908 &amp;&amp
SY<1912) yDisplay = '宣统' + (((SY-1908)==1)?'元':SY-1908)
if(SY>1911 &amp;&amp
SY<1950) yDisplay = '民国' + (((SY-1911)==1)?'元':SY-1911)
// if(SY>1949) yDisplay = '共和国' + (((SY-1949)==1)?'元':SY-1949)

// GZ.innerHTML = yDisplay +'年 农历' + cyclical(SY-1900+36) + '年 &amp;nbsp;&amp;nbsp;【'+Animals[(SY-4)%12]+'】';

if(SY>1949) yDisplay = ''

GZ.innerHTML = yDisplay +' 农历' + cyclical(SY-1900+36) + '年 &amp;nbsp;&amp;nbsp;【'+Animals[(SY-4)%12]+'】';

YMBG.innerHTML = "&amp;nbsp;" + SY + "<BR>&amp;nbsp;" + monthName[SM];


for(i=0;i<42;i++) {

sObj=eval('SD'+ i);
lObj=eval('LD'+ i);

sObj.className = '';

sD = i - cld.firstWeek;

if(sD>-1 &amp;&amp
sD<cld.length) {
sObj.innerHTML = sD+1;

if(cld[sD].isToday) sObj.className = 'todyaColor'


sObj.style.color = cld[sD].color


if(cld[sD].lDay==1)
lObj.innerHTML = '<b>'+(cld[sD].isLeap?'闰':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
else
lObj.innerHTML = cDay(cld[sD].lDay);

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].solarFestival;
if(s.length>0) {
size = (s.charCodeAt(0)>0 &amp;&amp
s.charCodeAt(0)<128)?8:4;
if(s.length>size+2) s = s.substr(0, size)+'…';
s = s.fontcolor('blue');
}
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 changeLong()
{
var y,m,ly,lm,id,im,iy,yangy,yangm,deltm,miny,tt;
CLD.SY.selectedIndex=CLD.D1.selectedIndex;
CLD.SM.selectedIndex=CLD.D2.selectedIndex;
yangm=0;yangy=0;
tt=true;
while (tt)
{
yangm=0;yangy=0;
changeCld();
for(i=0;i<42;i++)
{
sD = i - cld.firstWeek;
if(sD>-1 &amp;&amp
sD<cld.length)
{ //日期内
if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&amp;&amp;(cld[sD].lYear==CLD.D1.selectedIndex+1900))
{
yangy=CLD.SY.selectedIndex+1900
yangm=CLD.SM.selectedIndex ;
tt=false;
break;
}
}
}
if (!tt) break;

pushBtm('MD');
changeCld();

// alert(CLD.SY.selectedIndex+" "+CLD.SM.selectedIndex);

for(i=0;i<42;i++)
{
sD = i - cld.firstWeek;
if(sD>-1 &amp;&amp
sD<cld.length)
{ //日期内
if ((cld[sD].lMonth==CLD.D2.selectedIndex+1)&amp;&amp;(cld[sD].lYear==CLD.D1.selectedIndex+1900))
{
yangy=CLD.SY.selectedIndex+1900
yangm=CLD.SM.selectedIndex ;
tt=false;
break;
}
}
}
break;
}
// alert(yangy+" "+yangm);


//CLD.SY.selectedIndex=yangy;//-1900;
//pushBtm('YU');
//pushBtm('YD');
CLD.SM.selectedIndex=yangm

pushBtm('MD');
pushBtm('MU');



}
//changeLong end

function changeCld() {
var y,m;
y=CLD.SY.selectedIndex+1900;
m=CLD.SM.selectedIndex;
drawCld(y,m);
}

function pushBtm(K) {
switch (K){
case 'YU' :
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
break;
case 'YD' :
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
break;
case 'MU' :
if(CLD.SM.selectedIndex>0) {
CLD.SM.selectedIndex--;
}
else {
CLD.SM.selectedIndex=11;
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
}
break;
case 'MD' :
if(CLD.SM.selectedIndex<11) {
CLD.SM.selectedIndex++;
}
else {
CLD.SM.selectedIndex=0;
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
}
break;
default :
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
}
changeCld();
}



var Today = new Date();
var tY = Today.getFullYear();
var tM = Today.getMonth();
var tD = Today.getDate();
//////////////////////////////////////////////////////////////////////////////

var width = "130";
var offsetx = 2;
var offsety = 16;

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;
var sObj=eval('SD'+ v);
var d=sObj.innerHTML-1;

//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay

if(sObj.innerHTML!='') {

sObj.style.cursor = 's-resize';

if(cld[d].solarTerms == '' &amp;&amp
cld[d].solarFestival == '' &amp;&amp
cld[d].lunarFestival == '')
festival = '';
else
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+
'</TR></TABLE>';

s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066"><TR><TD>' +
'<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
'<font color="violet">农历'+(cld[d].isLeap?'闰 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
'<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
'</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';


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 tick() {
var today
today = new Date()
Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");
// Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)
window.setTimeout("tick()", 1000);
}

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 ""
}
}

/////////////////////////////////////////////////////////

function initial() {
dStyle = detail.style;
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
drawCld(tY,tM);

// CLD.TZ.selectedIndex=getCookie("TZ");
// changeTZ();
tick();
}



//-->
</SCRIPT>

<STYLE>.todyaColor {
BACKGROUND-COLOR: aqua
}
</STYLE>

<META content="Microsoft FrontPage 4.0" name=GENERATOR></HEAD>
<BODY background="" oncontextmenu=self.event.returnValue=false onload=initial()
topMargin=0>
<TABLE align=center border=1 borderColor=#ffcc00 cellPadding=0 cellSpacing=0
width=700>
<TBODY>
<TR bgColor=#ffcc66>
<TD height=100 width=194>
<DIV align=center><IMG border=0 height=80 src="中华农历.files/nongli.jpg"
width=173></DIV></TD>
<TD height=100 width=513>
<DIV align=center>
<SCRIPT language=javascript src=""></SCRIPT>
</DIV></TD></TR>
<TR>
<TD colSpan=2>
<SCRIPT language=JavaScript><!--
if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
document.write("<h1>你的浏览器无法执行此程序。</h1>此程序在 IE4 以后的版本才能执行!!")
//--></SCRIPT>

<DIV id=detail
style="HEIGHT: 16px
LEFT: 337px
POSITION: absolute
TOP: 200px
WIDTH: 302px"></DIV>
<FORM name=CLD>
<DIV align=center>
<TABLE align=center border=4 borderColorDark=#cc9900 height=259
width=698><CENTER>
<CENTER></CENTER></CENTER>
<TBODY>
<TR>
<TD align=middle height=255 vAlign=top width=254>
<DIV align=center>
<CENTER>
<TABLE border=0 width="100%" COLSPAN="2">
<CENTER>
<CENTER><FONT size=2 style="FONT-SIZE: 9pt">
<TBODY>
<TR>
<TD width="100%">&amp;nbsp
</FONT>
<TR>
<TD width="100%">
<P align=center><FONT size=2 style="FONT-SIZE: 9pt"><FONT
color=red
style="FONT-SIZE: 10.8pt">本地计算机时间:</FONT></FONT><BR><FONT
color=#000080 face=ARIAL id=Clock size=3
align="center"></FONT>
<P><!--时区 *表示自动调整为日光节约时间-->
<CENTER></CENTER>
<CENTER></CENTER></TD>
<TD width="100%">&amp;nbsp

<CENTER></CENTER>
<CENTER></CENTER></TD></TR></TBODY></TABLE></CENTER></DIV>
<DIV align=center>
<CENTER>
<TABLE border=0 height=1 width="100%">
<TBODY>
<TR>
<TD height=1 width="100%">
<TABLE height=1 width="100%">
<CENTER>
<CENTER><FONT id=tSave
style="COLOR: red
FONT-FAMILY: Wingdings
FONT-SIZE: 18pt"></FONT>
<TBODY>
<TR>
<TD width="88%">&amp;nbsp

<TR>
<TD height=1 width="88%"><FONT size=2><FONT
style="FONT-SIZE: 9pt"><FONT
color=#0000ff>公历</FONT>年</FONT><FONT color=#ffffff
style="FONT-SIZE: 9pt"> <SELECT name=SY
onchange=changeCld() style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1900;i<2050;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT> </FONT>月<FONT color=#ffffff
style="FONT-SIZE: 9pt"> <SELECT name=SM
onchange=changeCld() style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1;i<13;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT> </FONT></FONT>
<P align=left><FONT size=2><FONT
style="FONT-SIZE: 9pt"><FONT
color=#0000ff>阴历</FONT>年</FONT><FONT color=#ffffff
style="FONT-SIZE: 9pt"> <SELECT name=D1
onchange=changeLong() style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1900;i<2050;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT> </FONT>月<FONT color=#ffffff
style="FONT-SIZE: 9pt"> <SELECT name=D2
onchange=changeLong() style="FONT-SIZE: 9pt">
<SCRIPT language=JavaScript><!--
for(i=1;i<13;i++) document.write('<option>'+i)
//--></SCRIPT>
</SELECT> </FONT></FONT></P>
<TD height=1 vAlign=top width="12%">
<DIV align=center
style="HEIGHT: 1px
WIDTH: 4px"><BUTTON
onclick="pushBtm('MU')"
style="FONT-SIZE: 9pt">月↑</BUTTON></DIV><BUTTON
onclick="pushBtm('')"
style="FONT-SIZE: 9pt">当月</BUTTON><BR><BUTTON
onclick="pushBtm('MD')"
style="FONT-SIZE: 9pt">月↓</BUTTON>
<CENTER></CENTER>
<CENTER></CENTER>
<TR>
<CENTER>
<TD align=middle height=1 vAlign=center
width="88%"><BUTTON onclick="pushBtm('YU')"
style="FONT-SIZE: 9pt">年↑</BUTTON>&amp;nbsp;<BUTTON
onclick="pushBtm('YD')"
style="FONT-SIZE: 9pt">年↓</BUTTON>&amp;nbsp
</TD></CENTER>
<TD colSpan=2 height=1 width="12%">
<P align=left></P></TD></TR>
<TR>
<TD width="88%">&amp;nbsp
</TD></TR></TBODY></TABLE>
<CENTER>
<TABLE border=1 borderColorDark=#ffffcc height=1
width="100%"><TBODY>
<TR>
<TD height=1 width="100%"><FONT color=#0
style="FONT-SIZE: 10.8pt"> &amp;nbsp

阴历存在跨月情况,如果查找到的阴历月跨两个公历月,用<FONT
color=blue>[月↑][月↓]</FONT>翻动可以找到你想要的确切日期。</FONT></TD></TR></TBODY></TABLE></CENTER></CENTER></CENTER></TD></TR></TBODY></TABLE></CENTER></DIV></CENTER></CENTER>
<TD align=middle height=255 width=418>
<DIV
style="HEIGHT: 108px
LEFT: 344px
POSITION: absolute
TOP: 208px
WIDTH: 347px
Z-INDEX: -1">
<P> 
<P> 
<P><FONT id=YMBG
style="COLOR: #00ccff
FONT-FAMILY: 'Arial Black'
FONT-SIZE: 20pt">&amp;nbsp;</FONT>
</P></DIV>
<DIV align=center>
<CENTER>
<TABLE border=0 cellSpacing=1 height=27>
<TBODY>
<TR>
<TD align=middle bgColor=#000080 colSpan=7 height=24><FONT
color=#000080 size=2 style="FONT-SIZE: 9pt">月</FONT> <FONT
color=#ffffff face=宋体 id=GZ size=4></FONT><BR></TD></TR>
<TR align=middle bgColor=#e0e0e0>
<TD align=middle bgColor=#99ccff height=1 width=54><FONT
size=2>日</FONT></TD>
<TD align=middle bgColor=#99ccff height=1 width=54><FONT
size=2>一</FONT></TD>
<TD align=middle bgColor=#99ccff height=1 width=54><FONT
size=2>二</FONT></TD>
<TD align=middle bgColor=#99ccff height=1 width=50><FONT
size=2>三</FONT></TD>
<TD align=middle bgColor=#99ccff height=1 width=54><FONT
size=2>四</FONT></TD>
<TD align=middle bgColor=#99ccff height=1 width=54><FONT
size=2>五</FONT></TD>
<TD align=middle bgColor=#99ccff height=1 width=54><FONT
size=2>六</FONT></TD></TR>
<SCRIPT language=JavaScript><!--
var gNum
for(i=0;i<6;i++) {
document.write('<tr align=center>')
for(j=0;j<7;j++) {
gNum = i*7+j
document.write('<td id="GD' + gNum +'" onMouseOver="mOvr(' + gNum +')" onMouseOut="mOut()"><font id="SD' + gNum +'" size=2 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=""> </font><br><font id="LD' + gNum + '" size=2 style="font-size:9pt"> </font></td>')
}
document.write('</tr>')
}
//--></SCRIPT>
</TBODY></TABLE></CENTER></DIV></TD></TR></TBODY></TABLE></DIV></FORM></TD></TR></TBODY></TABLE>
<DIV align=center><BR></DIV></BODY></HTML>

 
农历的计算的确是有公式的,但有千条以上,而且个人不可能得到。向紫金山天文台索取
吧(估计不会给你)。

目前所有的万年历软件均使用查表法,包括以上的htm格式。我的软件也不例外。
一般软件没必要使用公式演算法,这些是天文台的事。

如果谁搞到公式,请给我一份,谢谢。哈......
 
这个不错,比我找到的表格要多一年,嘻嘻! 而且有时分,

不过一般人有点搞混了

公历大家都明白,农历是指正月初一,十五之类,还有就是干支日,农历的算法如 hamsoft
所说的话,那么我们就无须再花精力去搞了,非常复杂的东西。而干支日对 DELPHI 来说简
直是小菜里的配菜,两三句就搞定了,根本无须去找什么计算公式。
 
多人接受答案了。
 
后退
顶部