Javascript取得当前的农历详细信息

来源:互联网 发布:算法设计手册 百度云 编辑:程序博客网 时间:2024/05/10 14:55
<script>
function getChina()
{
var SMDay= new Array (0,31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
var LongLife= new Array ("132350046", "133222035", "043477123", "133402042");
var LMDay=new Array(13);
var InterMonth, InterMonthDays, SLRangeDay,i, size, m,yy,day,month,SDay,LDay,LMonth,magicstr, dsize, LunarMonth;
var today=new Date();
//yy = today.getYear();
//make by dongee
yy=2002;
SMonth=today.getMonth()+1;
SDay=today.getDate();
if ((yy%4==0) & (yy%100!=0) | (yy%400==0)) SMDay[2] = 29;
var magicstr = LongLife[yy-1999];
InterMonth = Math.abs(magicstr.substring(0,2));
LunarMonth = magicstr.substring(2,6);
m=LunarMonth;
for (i=12;i>=1;i--)
 { size=m%2;
   if (size==0)   LMDay[i]= 29
     else
      LMDay[i]=30;
   if (Math.round(m/2)>(m/2)) m=Math.round(m/2)-1
     else
       m=Math.round(m/2);
   }
dsize = magicstr.substring(6,7);
switch(dsize)
     {case  "0" :
            InterMonthDays = 0;
            break;
      case  "1" :
            InterMonthDays = 29;
            break;
      case  "2" :
            InterMonthDays = 30;
     }
SLRangeDay = magicstr.substring(7,9);
day = 0;
if (SMonth == 1)  day = SDay
   else
       { for (i= 1;i<=SMonth - 1;i++)   day = day + SMDay[i];
        day = day + SDay;
        }
if (day <= SLRangeDay)
        { day = day - SLRangeDay;
//re
magicstr = LongLife[yy-2000];
InterMonth = Math.abs(magicstr.substring(0,2));
LunarMonth = magicstr.substring(2,6);
m=LunarMonth;
for (i=12;i>=1;i--)
   {
     size=m%2;
     if (size==0)   LMDay[i]= 29
         else
            LMDay[i]=30;
     if (Math.round(m/2)>(m/2)) m=Math.round(m/2)-1
     else
      m=Math.round(m/2);
   }
dsize = magicstr.substring(6,7);
switch(dsize)
     {case  "0" :
            InterMonthDays = 0;
            break;
      case  "1" :
            InterMonthDays = 29;
            break;
      case  "2" :
            InterMonthDays = 30;
     }
SLRangeDay = magicstr.substring(7,9);
//end re     
    for (i=12;i>=1;i--)
       { day=day + LMDay[i];
         if (day>0)  break;
            }
          LMonth = i;
          LDay = day;
         }
//     
      else
       { day = day - SLRangeDay;
         for (i = 1;i<=InterMonth - 1;i++)
           { day = day - LMDay[i];
             if (day <= 0) break;
            }
          if (day <= 0 )
            { LMonth = i;
              LDay = day + LMDay[i];
             }
            else
              { day = day - LMDay[InterMonth];
                if (day <= 0 )
                  { LMonth = InterMonth;
                    LDay = day + LMDay[InterMonth];
                   }
                 else
                 { LMDay[InterMonth]=InterMonthDays;
                   for (i=InterMonth;i<=12;i++)
                    { day = day - LMDay[i];
                      if (day <= 0) break;
                     }
                  if (i == InterMonth)   LMonth = 0 - InterMonth
                    else
                      LMonth = i;
                  LDay = day + LMDay[i];
                  }
               }
           }
month=new Array ("0","正月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","腊月");
day=new Array ("0","初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二",
                "十三","十四","十五","十六","十七","十八","十九","廿","廿一","廿二","廿三",
                "廿四","廿五","廿六","廿七","廿八","廿九","三十");
tiangan = new Array ("0","甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
dizhi = new Array("0","子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥")
var beginYear = 1924;
var year = new Date().getYear();
var interval = year-beginYear+1;
if(Math.abs(LMonth)>(new Date().getMonth()+1)){
    interval -=1
}
var ltian = interval%10
var ldi = interval%12
//make by dongee ,thanks read
var lyear =tiangan[ltian]+dizhi[ldi]

if (LMonth<0) {
LMonth=Math.abs(LMonth);LDay=Math.abs(LDay);
     document.getElementById("divDate").innerText = "农历 闰"+month[LMonth]+day[LDay];
}
   else
     document.getElementById("divDate").innerText = " "+lyear+"年"+month[LMonth]+day[LDay];
}
</script>
原创粉丝点击