您在這裡

利用區塊顯示農民曆

dionysian's 的頭像
dionysian 在 2007-06-07 (四) 22:14 發表

有人需要農民曆嗎?忽然想到以前再玩phpnuke時有一堆程式可以放入區塊中使用,想要的人把下面的程式碼複製到新增的區塊中,設定使用php碼即可.
LASTYEAR ) return 1;

sm = SolarMonth - 1;

if ( sm < 0 || sm > 11 ) return 2;

leap = GetLeap( SolarYear );

if ( sm == 1 )
d = leap + 28;
else
d = SolarCal[sm];

if ( SolarDate < 1 || SolarDate > d ) return 3;

y = SolarYear - FIRSTYEAR;
acc = SolarDays[ leap*14 + sm ] + SolarDate;
kc = acc + LunarCal[y].BaseKanChih;
Kan = kc % 10;
Chih = kc % 12;
Location = LocationIdx[kc % 4];
Age = kc % 60;
if ( Age < 22 )
Age = 22 - Age;
else
Age = 82 - Age;

Age =Age + 3;

if (Age < 10)
Age=Age+60;

Animal = AnimalIdx[ Chih ];

if ( acc <= LunarCal[y].BaseDays ) {
y--;
LunarYear = SolarYear - 1;
leap = GetLeap( LunarYear );
sm += 12;
acc = SolarDays[leap*14 + sm] + SolarDate;
}
else
LunarYear = SolarYear;

l1 = LunarCal[y].BaseDays;
for ( i=0; i<13; i++ ) {
l2 = l1 + LunarCal[y].MonthDays[i] + 29;
if ( acc <= l2 ) break;
l1 = l2;
}

LunarMonth = i + 1;
LunarDate = acc - l1;
im = LunarCal[y].Intercalation;

if ( im != 0 && LunarMonth > im ) {
LunarMonth--;
if ( LunarMonth == im ) LunarMonth = -im;
}

if ( LunarMonth > 12 ) LunarMonth -= 12;

document.write( "西元 " + SolarYear + "年" + SolarMonth + "月" + SolarDate + "日" );
document.write( "農曆 " + LunarMonth + "月 " + LunarDate + "日" );
document.write( "煞" + Location + " - 沖" + Animal + Age + " 歲" );

return 0;
}

/* 求此西曆年是否為閏年, 返回 0 為平年, 1 為閏年 */
function GetLeap( year ){
if ( year % 400 == 0 )
return 1;
else if ( year % 100 == 0 )
return 0;
else if ( year % 4 == 0 )
return 1;
else
return 0;
}

function tagLunarCal( d, i, w, k, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13) {
this.BaseDays = d; /* 到西曆 1 月 1 日到農曆正月初一的累積日數 */
this.Intercalation = i; /* 閏月月份. 0==此年沒有閏月 */
this.BaseWeekday = w; /* 此年西曆 1 月 1 日為星期幾再減 1 */
this.BaseKanChih = k; /* 此年西曆 1 月 1 日之干支序號減 1 */
this.MonthDays = [ m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13 ];/* 此農曆年每月之大小, 0==小月(29日), 1==大月(30日) */
}

CalConv();
//-->