<
html
>
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" >
< title > 带农历的JavaScript日期时间 </ title >
</ head >
< body >
< SCRIPT language =JavaScript >
<!--
function CalConv()
{
FIRSTYEAR = 1998 ;
LASTYEAR = 2031 ;
today = new Date();
SolarYear = today.getFullYear();
SolarMonth = today.getMonth() + 1 ;
SolarDate = today.getDate();
Weekday = today.getDay();
LunarCal = [
new tagLunarCal( 27 , 5 , 3 , 43 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 1 , 0 , 1 ),
new tagLunarCal( 46 , 0 , 4 , 48 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 1 ), /* 88 */
new tagLunarCal( 35 , 0 , 5 , 53 , 1 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 ), /* 89 */
new tagLunarCal( 23 , 4 , 0 , 59 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 42 , 0 , 1 , 4 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 31 , 0 , 2 , 9 , 1 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 ),
new tagLunarCal( 21 , 2 , 3 , 14 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ), /* 93 */
new tagLunarCal( 39 , 0 , 5 , 20 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 28 , 7 , 6 , 25 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 48 , 0 , 0 , 30 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 37 , 0 , 1 , 35 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 ), /* 97 */
new tagLunarCal( 25 , 5 , 3 , 41 , 1 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 44 , 0 , 4 , 46 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 33 , 0 , 5 , 51 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 22 , 4 , 6 , 56 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 ), /* 101 */
new tagLunarCal( 40 , 0 , 1 , 2 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 ),
new tagLunarCal( 30 , 9 , 2 , 7 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 49 , 0 , 3 , 12 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 38 , 0 , 4 , 17 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 , 0 ), /* 105 */
new tagLunarCal( 27 , 6 , 6 , 23 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 1 ),
new tagLunarCal( 46 , 0 , 0 , 28 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 ),
new tagLunarCal( 35 , 0 , 1 , 33 , 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 ),
new tagLunarCal( 24 , 4 , 2 , 38 , 0 , 1 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ), /* 109 */
new tagLunarCal( 42 , 0 , 4 , 44 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 31 , 0 , 5 , 49 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 ),
new tagLunarCal( 21 , 2 , 6 , 54 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 40 , 0 , 0 , 59 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 , 0 , 1 ), /* 113 */
new tagLunarCal( 28 , 6 , 2 , 5 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 1 , 0 ),
new tagLunarCal( 47 , 0 , 3 , 10 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 1 , 0 , 1 ),
new tagLunarCal( 36 , 0 , 4 , 15 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 ),
new tagLunarCal( 25 , 5 , 5 , 20 , 1 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 ), /* 117 */
new tagLunarCal( 43 , 0 , 0 , 26 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 32 , 0 , 1 , 31 , 1 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 0 ),
new tagLunarCal( 22 , 3 , 2 , 36 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 ) ];
/* 民国年月日 */
SolarCal = [ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ];
SolarDays = [ 0 , 31 , 59 , 90 , 120 , 151 , 181 , 212 , 243 , 273 , 304 , 334 , 365 , 396 , 0 , 31 , 60 , 91 , 121 , 152 , 182 , 213 , 244 , 274 , 305 , 335 , 366 , 397 ];
if ( SolarYear <= FIRSTYEAR || SolarYear > 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 ;
Age = kc % 60 ;
if ( Age < 22 )
Age = 22 - Age;
else
Age = 82 - Age;
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 ;
today = new Date();
function initArray(){
this .length = initArray.arguments.length
for ( var i = 0 ;i < this .length;i ++ )
this [i + 1 ] = initArray.arguments[i] }
var d = new initArray( " 星期日 " , " 星期一 " , " 星期二 " , " 星期三 " , " 星期四 " , " 星期五 " , " 星期六 " );
document.write( "" , today.getYear(), " 年 " ,today.getMonth() + 1 , " 月 " ,today.getDate(), " 日 " ,d[today.getDay() + 1 ], "" );
months = [ " 一 " , " 二 " , " 三 " , " 四 " , " 五 " , " 六 " , " 七 " , " 八 " , " 九 " , " 十 " , " 十一 " , " 十二 " ];
days = [ " 初一 " , " 初二 " , " 初三 " , " 初四 " , " 初五 " , " 初六 " , " 初七 " , " 初八 " , " 初九 " , " 初十 " , " 十一 " , " 十二 " , " 十三 " , " 十四 " , " 十五 " , " 十六 " , " 十七 " , " 十八 " , " 十九 " , " 二十 " , " 廿一 " , " 廿二 " , " 廿三 " , " 廿四 " , " 廿五 " , " 廿六 " , " 廿七 " , " 廿八 " , " 廿九 " , " 三十 " ];
document.write( " 农历 " + months[LunarMonth - 1 ] + " 月 " + days[LunarDate - 1 ] + "" );
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;
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日) */
}
// -->
</ SCRIPT >
< a target =_blank href = />< FONT color =#0066cc >< SCRIPT > CalConv(); </ SCRIPT ></ FONT ></ a >
</ body >
</ html >
< head >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" >
< title > 带农历的JavaScript日期时间 </ title >
</ head >
< body >
< SCRIPT language =JavaScript >
<!--
function CalConv()
{
FIRSTYEAR = 1998 ;
LASTYEAR = 2031 ;
today = new Date();
SolarYear = today.getFullYear();
SolarMonth = today.getMonth() + 1 ;
SolarDate = today.getDate();
Weekday = today.getDay();
LunarCal = [
new tagLunarCal( 27 , 5 , 3 , 43 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 , 1 , 0 , 1 ),
new tagLunarCal( 46 , 0 , 4 , 48 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 1 ), /* 88 */
new tagLunarCal( 35 , 0 , 5 , 53 , 1 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 ), /* 89 */
new tagLunarCal( 23 , 4 , 0 , 59 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 42 , 0 , 1 , 4 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 31 , 0 , 2 , 9 , 1 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 ),
new tagLunarCal( 21 , 2 , 3 , 14 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ), /* 93 */
new tagLunarCal( 39 , 0 , 5 , 20 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 28 , 7 , 6 , 25 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 48 , 0 , 0 , 30 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 37 , 0 , 1 , 35 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 ), /* 97 */
new tagLunarCal( 25 , 5 , 3 , 41 , 1 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 44 , 0 , 4 , 46 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 ),
new tagLunarCal( 33 , 0 , 5 , 51 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 22 , 4 , 6 , 56 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 ), /* 101 */
new tagLunarCal( 40 , 0 , 1 , 2 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 ),
new tagLunarCal( 30 , 9 , 2 , 7 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 49 , 0 , 3 , 12 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 38 , 0 , 4 , 17 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 , 0 ), /* 105 */
new tagLunarCal( 27 , 6 , 6 , 23 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 1 ),
new tagLunarCal( 46 , 0 , 0 , 28 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 ),
new tagLunarCal( 35 , 0 , 1 , 33 , 0 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 ),
new tagLunarCal( 24 , 4 , 2 , 38 , 0 , 1 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 ), /* 109 */
new tagLunarCal( 42 , 0 , 4 , 44 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 31 , 0 , 5 , 49 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 ),
new tagLunarCal( 21 , 2 , 6 , 54 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 40 , 0 , 0 , 59 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 1 , 0 , 1 ), /* 113 */
new tagLunarCal( 28 , 6 , 2 , 5 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 , 0 , 1 , 1 , 1 , 0 ),
new tagLunarCal( 47 , 0 , 3 , 10 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 1 , 0 , 1 ),
new tagLunarCal( 36 , 0 , 4 , 15 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 , 1 ),
new tagLunarCal( 25 , 5 , 5 , 20 , 1 , 1 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 0 , 1 , 1 , 0 ), /* 117 */
new tagLunarCal( 43 , 0 , 0 , 26 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 0 , 1 , 0 , 1 ),
new tagLunarCal( 32 , 0 , 1 , 31 , 1 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 , 1 , 0 , 0 ),
new tagLunarCal( 22 , 3 , 2 , 36 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 1 , 0 , 1 , 0 , 1 , 0 ) ];
/* 民国年月日 */
SolarCal = [ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ];
SolarDays = [ 0 , 31 , 59 , 90 , 120 , 151 , 181 , 212 , 243 , 273 , 304 , 334 , 365 , 396 , 0 , 31 , 60 , 91 , 121 , 152 , 182 , 213 , 244 , 274 , 305 , 335 , 366 , 397 ];
if ( SolarYear <= FIRSTYEAR || SolarYear > 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 ;
Age = kc % 60 ;
if ( Age < 22 )
Age = 22 - Age;
else
Age = 82 - Age;
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 ;
today = new Date();
function initArray(){
this .length = initArray.arguments.length
for ( var i = 0 ;i < this .length;i ++ )
this [i + 1 ] = initArray.arguments[i] }
var d = new initArray( " 星期日 " , " 星期一 " , " 星期二 " , " 星期三 " , " 星期四 " , " 星期五 " , " 星期六 " );
document.write( "" , today.getYear(), " 年 " ,today.getMonth() + 1 , " 月 " ,today.getDate(), " 日 " ,d[today.getDay() + 1 ], "" );
months = [ " 一 " , " 二 " , " 三 " , " 四 " , " 五 " , " 六 " , " 七 " , " 八 " , " 九 " , " 十 " , " 十一 " , " 十二 " ];
days = [ " 初一 " , " 初二 " , " 初三 " , " 初四 " , " 初五 " , " 初六 " , " 初七 " , " 初八 " , " 初九 " , " 初十 " , " 十一 " , " 十二 " , " 十三 " , " 十四 " , " 十五 " , " 十六 " , " 十七 " , " 十八 " , " 十九 " , " 二十 " , " 廿一 " , " 廿二 " , " 廿三 " , " 廿四 " , " 廿五 " , " 廿六 " , " 廿七 " , " 廿八 " , " 廿九 " , " 三十 " ];
document.write( " 农历 " + months[LunarMonth - 1 ] + " 月 " + days[LunarDate - 1 ] + "" );
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;
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日) */
}
// -->
</ SCRIPT >
< a target =_blank href = />< FONT color =#0066cc >< SCRIPT > CalConv(); </ SCRIPT ></ FONT ></ a >
</ body >
</ html >