Js output lunar calendar solar calendar year month week sample code
- 2020-03-30 01:36:55
- OfStack
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta content="Microsoft FrontPage 4.0">
<meta content="FrontPage.Editor.Document">
<style type="text/css">
<!--TD {font-size: 9pt; font-family: Song typeface }
--></style>
<title></title>
<script type="text/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 Animals=new Array(" The rat "," The cow "," The tiger "," The rabbit "," dragon "," The snake "," The horse "," The sheep "," The monkey "," chicken "," The dog "," The pig ");
var Gan=new Array(" a "," b "," c "," ding "," e "," f "," heptyl "," simba "," nonyl "," decyl ");
var Zhi=new Array(" The child "," The ugly "," Yin "," sockets "," Chen" "," The third "," noon "," not "," " "," unitary "," xu-gou "," hai ");
var now = null;
var SY = null;
var SM = null;
var SD = null;
function getDateList(yy,mm,dd){
if(yy){
now= new Date(yy, mm, dd);
}else{
now = new Date();
}
SY = now.getFullYear();
SM = now.getMonth();
SD = now.getDate();
return setCalendar();
}
//==== = incoming offset returns to the main branch, 0= jia zi
function cyclical(num) { return(Gan[num%10]+Zhi[num%12])}
//==== returns the total number of days in the y year in the lunar calendar
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))
}
//==== returns the number of leap months in the y year
function leapDays(y) {
if(leapMonth(y)) return((lunarInfo[y-1900] & 0x10000)? 30: 29)
else return(0)
}
//==== returns the month 1-12 of the y year in the lunar calendar. No leap returns 0
function leapMonth(y) { return(lunarInfo[y-1900] & 0xf)}
//= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = return the total number of days of the m y year lunar month
function monthDays(y,m) { return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )}
//==== calculate the lunar calendar, pass in the date object, return the lunar date object
// The object attribute is. 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) //Leap which month
this.isLeap = false
for(i=1; i<13 && offset>0; i++) {
// Leap month
if(leap>0 && i==(leap+1) && this.isLeap==false)
{ --i; this.isLeap = true; temp = leapDays(this.year); }
else
{ temp = monthDays(this.year, i); }
//Lift the leap month
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 YYMMDD(){
var cl = '<font color="#0000df" STYLE="font-size:9pt;">';
if (now.getDay() == 0) cl = '<font color="#c00000" STYLE="font-size:9pt;">';
if (now.getDay() == 6) cl = '<font color="#00c000" STYLE="font-size:9pt;">';
return(cl+SY+' years '+(SM+1)+' month '+SD+' day </font>');
}
function weekday(){
var day = new Array(" Sunday "," Monday "," Tuesday "," Wednesday "," Thursday "," Friday "," Saturday ");
var cl = '<font color="#ff0000" STYLE="font-size:9pt;">';
if (now.getDay() == 0) cl = '<font color="#c00000" STYLE="font-size:9pt;">';
if (now.getDay() == 6) cl = '<font color="#00c000" STYLE="font-size:9pt;">';
return(cl+ day[now.getDay()]+ '</font>');
}
//==== = Chinese date
function cDay(m,d){
var nStr1 = new Array(' day ',' one ',' two ',' three ',' four ',' five ',' six ',' seven ',' eight ',' nine ',' ten ');
var nStr2 = new Array(' In the early ',' ten ',' 21 ',' 30 ',' ');
var s;
if (m>10){s = ' ten '+nStr1[m-10]} else {s = nStr1[m]} s += ' month '
switch (d) {
case 10:s += ' The 10th '; break;
case 20:s += ' twenty '; break;
case 30:s += ' thirty '; break;
default:s += nStr2[Math.floor(d/10)]; s += nStr1[d%10];
}
return(s);
}
function solarDay1(){
var sDObj = new Date(SY,SM,SD);
var lDObj = new Lunar(sDObj);
var cl = '<font color="violet" STYLE="font-size:9pt;">';
var tt = ' 【 '+Animals[(SY-4)%12]+' 】 '+cyclical(lDObj.monCyl)+' month '+cyclical(lDObj.dayCyl++)+' day ' ;
return(cl+tt+'</font>');
}
function solarDay2(){
var sDObj = new Date(SY,SM,SD);
var lDObj = new Lunar(sDObj);
var cl = '<font color="#000066" STYLE="font-size:9pt;">';
//The lunar BB '+ (CLD [d]. IsLeap? Leap:)+ CLD [d]. LMonth + CLD [d]. LDay +' day '
var tt = cyclical(SY-1900+36)+' years '+cDay(lDObj.month,lDObj.day);
return(cl+tt+'</font>');
}
function solarDay3(){
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 solarTerm = new Array(" Slight cold "," Severe cold "," Spring begins "," The rain "," Insects awaken "," The vernal equinox "," The tomb-sweeping day "," Grain rain "," Summer begins "," Grain full "," Grain in ear "," The summer solstice "," Slight heat "," Great heat "," The beginning of autumn "," The limit of heat "," The millennium "," equinox "," Cold dew "," frost "," The beginning of winter "," Light snow "," The heavy snow "," Winter Solstice Festival ")
var lFtv = new Array("0101* Spring Festival ","0115 Lantern Festival ","0505 Dragon Boat Festival ","0707 Chinese valentine's day ","0715 Ghost Festival ","0815 Mid-Autumn Festival ","0909 Double Ninth Festival ","1208 Laba Festival ","1224 off-year ","0100* Chinese New Year's Eve ")
var sFtv = new Array("0101* New Year's Day ","0214 Valentine's Day ","0308 The international working women's day ","0312 Arbor Day ","0315 Consumer rights day ",
"0401 April Fools' Day ","0501 International Workers' Day ","0504 Youth day ","0512 Nurses day ","0601 Children's day ","0701 The founding section Anniversary of Hong Kong's return ",
"0801 The army day ","0808 Father's Day ","0908 MAO's birthday ","0909 Anniversary of MAO zedong's death ","0910 Teacher's day ","0928 Confucius's birthday ","1001* The National Day ",
"1006 advocates ","1001 ListenWind birthday ","1024 The United Nations, ","1112 Sun yat-sen's birthday ","1220 Anniversary of Macao's return ","1225 Christmas ","1226 MAO zedong's birthday ")
var sDObj = new Date(SY,SM,SD);
var lDObj = new Lunar(sDObj);
var lDPOS = new Array(3)
var festival='',solarTerms='',solarFestival='',lunarFestival='',tmp1,tmp2;
//The lunar festival
for(i in lFtv)
if(lFtv[i].match(/^(/d{2})(.{2})([/s/*])(.+)$/)) {
tmp1=Number(RegExp.$1)-lDObj.month
tmp2=Number(RegExp.$2)-lDObj.day
if(tmp1==0 && tmp2==0) lunarFestival=RegExp.$4
}
//Countries through the festival
for(i in sFtv)
if(sFtv[i].match(/^(/d{2})(/d{2})([/s/*])(.+)$/)){
tmp1=Number(RegExp.$1)-(SM+1)
tmp2=Number(RegExp.$2)-SD
if(tmp1==0 && tmp2==0) solarFestival = RegExp.$4
}
// Solar terms
tmp1 = new Date((31556925974.7*(SY-1900)+sTermInfo[SM*2+1]*60000)+Date.UTC(1900,0,6,2,5))
tmp2 = tmp1.getUTCDate()
if (tmp2==SD) solarTerms = solarTerm[SM*2+1]
tmp1 = new Date((31556925974.7*(SY-1900)+sTermInfo[SM*2]*60000)+Date.UTC(1900,0,6,2,5))
tmp2= tmp1.getUTCDate()
if (tmp2==SD) solarTerms = solarTerm[SM*2]
if(solarTerms == '' && solarFestival == '' && lunarFestival == '')
festival = '';
else
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+solarTerms + ' ' + solarFestival + ' ' + lunarFestival+'</FONT></TD>'+
'</TR></TABLE>';
var cl = '<font color="#000066" STYLE="font-size:9pt;">';
return(cl+festival+'</font>');
}
function setCalendar(){
var html='';
html+='<table align=right CELLPADDING=2 CELLSPACING=0 border=0><tr><td bgcolor=#FEFEEF><table border=0 CELLPADDING=0 CELLSPACING=0><tr><td align=center>';
html+=YYMMDD()+' '+weekday();
html+='</td>';
html+='<td align=center>';
html+=solarDay1();
html+='</td><td align=center>';
html+=solarDay2();
html+='</td><td align=center>';
html+=solarDay3();
html+='</td></tr></table></td></tr></table>';
return html;
}
</script>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript">
var temDate=new Date();
var m=parseInt(temDate.getDate());
var xxx = getDateList(temDate.getFullYear(), (m<31?temDate.getMonth():temDate.getMonth()+1), m<31?m:0);
$(document).ready(function(){
$("#sss").html(xxx);
})
</script>
</head>
<body topmargin="0" leftmargin="0">
<div align="center"><center>
<table border="0" cellpadding="0" cellspacing="0" width="100%" bgcolor="#FFFFFF" height="0%" bgcolor="#C0C0C0">
<tr>
<td width="100%" align="right"><div id="sss"></div></td>
</tr>
</table>
</center></div>
</body>
</html>