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>


Related articles: