如题

解决方案 »

  1.   

    具体一点,我去GOOGLE没找到相关的。
      

  2.   


    公历转换农历的算法及其JavaScript实现   
      ------------------------------------------以下为程序内容date.js   
        
      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);   
          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,"<br>",cDateString);   
      你可以这样写一个HTML文件调用date.js:   <html>   
      <head>   
      </head>   
      <body>   
      <script   language="JavaScript"   src="date.js"></script>   
      </body>       
      </html>
      

  3.   

    http://www.cnblogs.com/DavidLc/archive/2008/02/14/1068952.htmlhttp://www.cnblogs.com/DavidLc/archive/2008/02/14/1068950.html
      

  4.   

    .net 2.0 提供了农历类ChineseLunisolarCalendar
      

  5.   

    DateTime myDT = new DateTime( 2009, 1, 1, new System.Globalization.ChineseLunisolarCalendar() );System.Globalization.Calendar myCal = System.Globalization.CultureInfo.InvariantCulture.Calendar;
                
    int year = myCal.GetYear(myDT);
    int month = myCal.GetMonth( myDT );
    int day = myCal.GetDayOfMonth(myDT);