显示公历和农历的Javascript代码

出处不详

默认效果为:2013年1月30日 16:14 星期三 壬辰年(龙) 腊月十九 申时

 
  var   CalendarData=new   Array(20);   
  var   madd=new   Array(12);   
  var   TheDate=new   Date();   
  var   tgString="甲乙丙丁戊己庚辛壬癸";   
  var   dzString="子丑寅卯辰巳午未申酉戌亥";   
  var   numString="一二三四五六七八九十";   
  var   monString="正二三四五六七八九十冬腊";   
  var   weekString="日一二三四五六";   
  var   sx="鼠牛虎兔龙蛇马羊猴鸡狗猪";   
  var   cYear;   
  var   cMonth;   
  var   cDay;   
  var   cHour;   
  var   cDateString;   
  var   DateString;   
  var   Browser=navigator.appName;   

  function   init()   
  {     
      CalendarData[0]=0x41A95;   
      CalendarData[1]=0xD4A;   
      CalendarData[2]=0xDA5;   
      CalendarData[3]=0x20B55;   
      CalendarData[4]=0x56A;   
      CalendarData[5]=0x7155B;   
      CalendarData[6]=0x25D;   
      CalendarData[7]=0x92D;   
      CalendarData[8]=0x5192B;   
      CalendarData[9]=0xA95;   
      CalendarData[10]=0xB4A;   
      CalendarData[11]=0x416AA;   
      CalendarData[12]=0xAD5;   
      CalendarData[13]=0x90AB5;   
      CalendarData[14]=0x4BA;   
      CalendarData[15]=0xA5B;   
      CalendarData[16]=0x60A57;   
      CalendarData[17]=0x52B;   
      CalendarData[18]=0xA93;   
      CalendarData[19]=0x40E95;   
      madd[0]=0;   
      madd[1]=31;   
      madd[2]=59;   
      madd[3]=90;   
      madd[4]=120;   
      madd[5]=151;   
      madd[6]=181;   
      madd[7]=212;   
      madd[8]=243;   
      madd[9]=273;   
      madd[10]=304;   
      madd[11]=334;   
    }   

  function   GetBit(m,n)   
  {     
        return   (m>>n)&1;   
  }   

  function   e2c()   
  {       
      var   total,m,n,k;   
      var   isEnd=false;   
      var   tmp=TheDate.getYear();   
      if   (tmp<1900)     tmp+=1900;          total=(tmp-2001)*365              +Math.floor((tmp-2001)/4)              +madd[TheDate.getMonth()]              +TheDate.getDate()              -23;          if   (TheDate.getYear()%4==0&&TheDate.getMonth()>1)   
          total++;   
      for(m=0;;m++)   
      {       
          k=(CalendarData[m]<0xfff)?11:12;              for(n=k;n>=0;n--)   
          {   
              if(total<=29+GetBit(CalendarData[m],n))                  {                        isEnd=true;                      break;                  }                  total=total-29-GetBit(CalendarData[m],n);              }              if(isEnd)break;          }          cYear=2001   +   m;          cMonth=k-n+1;          cDay=total;          if(k==12)          {              if(cMonth==Math.floor(CalendarData[m]/0x10000)+1)                  cMonth=1-cMonth;              if(cMonth>Math.floor(CalendarData[m]/0x10000)+1)   
              cMonth--;   
      }   
      cHour=Math.floor((TheDate.getHours()+3)/2);   
  }   

  function   GetcDateString()   
  {   var   tmp="";   
      tmp+=tgString.charAt((cYear-4)%10);       //年干   
      tmp+=dzString.charAt((cYear-4)%12);       //年支   
      tmp+="年(";   
      tmp+=sx.charAt((cYear-4)%12);   
      tmp+=")   ";   
      if(cMonth<1)   
      {     
        tmp+="闰";   
          tmp+=monString.charAt(-cMonth-1);   
      }   
      else   
          tmp+=monString.charAt(cMonth-1);   
      tmp+="月";   
      tmp+=(cDay<11)?"初":((cDay<20)?"十":((cDay<30)?"廿":"卅"));   
      if(cDay%10!=0||cDay==10)   
          tmp+=numString.charAt((cDay-1)%10);   
      tmp+="    ";   
      if(cHour==13)tmp+="夜";   
          tmp+=dzString.charAt((cHour-1)%12);   
      tmp+="时";   
      cDateString=tmp;   
      return   tmp;   
  }   

  function   GetDateString()   
  {     
      var   tmp="";   
      var   t1=TheDate.getYear();   
      if   (t1<1900)t1+=1900;   
      tmp+=t1   
                +"年"   
                +(TheDate.getMonth()+1)+"月"   
                +TheDate.getDate()+"日   "   
                +TheDate.getHours()+":"   
                +((TheDate.getMinutes()<10)?"0":"")   
                +TheDate.getMinutes() 
                +"   星期"+weekString.charAt(TheDate.getDay());     
      DateString=tmp;   
      return   tmp;   
  }   

  init();   
  e2c();   
  GetDateString();   
  GetcDateString();   
  document.write(DateString," ",cDateString);   

你的電子郵件位址並不會被公開。 必要欄位標記為 *