哪位朋友做过阴阳历转换啊?类似于http://www.jiyiri.com/index.php 里面的生日选择框,可以实现公历和农历的相互转换,谁有相关开发经历,麻烦介绍一下,Javascript和.net都可以。非常感谢。

解决方案 »

  1.   

    我们有的时候会用到阴历来做一些事情,在1.1的时候,只能用第三方的方法。现在2.0中给了自己的方法,不多说了,放一个例子。
    前台:<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
        
            请输入阳历日期:<asp:TextBox ID="txtSun" runat="server"></asp:TextBox>
            <br />
            <br />
            阳历日期:<asp:TextBox ID="txtMoon" runat="server" ></asp:TextBox>
            <br />
            <br />
            <asp:Button ID="Button1" runat="server" Text="转换" onclick="Button1_Click" />
        
        </div>
        </form>
    </body>
    </html>后台“
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Globalization;namespace WebApplication1
    {
        public partial class WebForm2 : System.Web.UI.Page
        {
            private ChineseLunisolarCalendar chineseDate = new ChineseLunisolarCalendar();        protected void Page_Load(object sender, EventArgs e)
            {        }        protected void Button1_Click(object sender, EventArgs e)
            {
                string Moon = chineseDate.GetYear(Convert.ToDateTime(this.txtSun.Text.Trim())).ToString() + "-" + chineseDate.GetMonth(Convert.ToDateTime(this.txtSun.Text.Trim())).ToString() + "-" + chineseDate.GetDayOfMonth(Convert.ToDateTime(this.txtSun.Text.Trim()));
                this.txtMoon.Text = Moon;
            }       
        }
    }
      

  2.   

    function DaysNumberofDate(DateGL){
    var y1 = DateGL.getFullYear();
    return parseInt((Date.parse(DateGL)-Date.parse(y1+"/1/1"))/86400000)+1;
    }
    function CnDateofDate(DateGL){
    var CnData=new Array(
    0x16,0x2a,0xda,0x00,0x83,0x49,0xb6,0x05,0x0e,0x64,0xbb,0x00,0x19,0xb2,0x5b,0x00,
    0x87,0x6a,0x57,0x04,0x12,0x75,0x2b,0x00,0x1d,0xb6,0x95,0x00,0x8a,0xad,0x55,0x02,
    0x15,0x55,0xaa,0x00,0x82,0x55,0x6c,0x07,0x0d,0xc9,0x76,0x00,0x17,0x64,0xb7,0x00,
    0x86,0xe4,0xae,0x05,0x11,0xea,0x56,0x00,0x1b,0x6d,0x2a,0x00,0x88,0x5a,0xaa,0x04,
    0x14,0xad,0x55,0x00,0x81,0xaa,0xd5,0x09,0x0b,0x52,0xea,0x00,0x16,0xa9,0x6d,0x00,
    0x84,0xa9,0x5d,0x06,0x0f,0xd4,0xae,0x00,0x1a,0xea,0x4d,0x00,0x87,0xba,0x55,0x04
    );
    var CnMonth=new Array();
    var CnMonthDays=new Array();
    var CnBeginDay;
    var LeapMonth;
    var Bytes=new Array();
    var I;
    var CnMonthData;
    var DaysCount;
    var CnDaysCount;
    var ResultMonth;
    var ResultDay;
    var yyyy=DateGL.getFullYear();
    var mm=DateGL.getMonth()+1;
    var dd=DateGL.getDate();
    if(yyyy<100) yyyy+=1900;
    if ((yyyy < 1997) || (yyyy > 2020)){
    return 0;
    }
    Bytes[0] = CnData[(yyyy - 1997) * 4];
    Bytes[1] = CnData[(yyyy - 1997) * 4 + 1];
    Bytes[2] = CnData[(yyyy - 1997) * 4 + 2];
    Bytes[3] = CnData[(yyyy - 1997) * 4 + 3];
    if ((Bytes[0] & 0x80) != 0) {CnMonth[0] = 12;}
    else {CnMonth[0] = 11;}
    CnBeginDay = (Bytes[0] & 0x7f);
    CnMonthData = Bytes[1];
    CnMonthData = CnMonthData << 8;
    CnMonthData = CnMonthData | Bytes[2];
    LeapMonth = Bytes[3];
    for (I=15;I>=0;I--){
    CnMonthDays[15 - I] = 29;
    if (((1 << I) & CnMonthData) != 0 ){
    CnMonthDays[15 - I]++;
    }
    if (CnMonth[15 - I] == LeapMonth ){
    CnMonth[15 - I + 1] = - LeapMonth;
    }else{
    if (CnMonth[15 - I] < 0 ){CnMonth[15 - I + 1] = - CnMonth[15 - I] + 1;}
    else {CnMonth[15 - I + 1] = CnMonth[15 - I] + 1;}
    if (CnMonth[15 - I + 1] > 12 ){ CnMonth[15 - I + 1] = 1;}
    }
    }
    DaysCount = DaysNumberofDate(DateGL) - 1;
    if (DaysCount <= (CnMonthDays[0] - CnBeginDay)){
    if ((yyyy > 1901) && (CnDateofDate(new Date((yyyy - 1)+"/12/31")) < 0)){
    ResultMonth = - CnMonth[0];
    }else{
    ResultMonth = CnMonth[0];
    }
    ResultDay = CnBeginDay + DaysCount;
    }else{
    CnDaysCount = CnMonthDays[0] - CnBeginDay;
    I = 1;
    while ((CnDaysCount < DaysCount) && (CnDaysCount + CnMonthDays[I] < DaysCount)){
    CnDaysCount+= CnMonthDays[I];
    I++;
    }
    ResultMonth = CnMonth[I];
    ResultDay = DaysCount - CnDaysCount;
    }
    if (ResultMonth > 0){
    return ResultMonth * 100 + ResultDay;
    }else{
    return ResultMonth * 100 - ResultDay;
    }
    }
    function CnYearofDate(DateGL){
    var YYYY= DateGL.getFullYear();
    var MM=DateGL.getMonth()+1;
    var CnMM=parseInt(Math.abs(CnDateofDate(DateGL))/100);
    if(YYYY<100) YYYY+=1900;
    if(CnMM>MM) YYYY--;
    YYYY-=1864;
    return CnEra(YYYY)+"年";
    }
    function CnMonthofDate(DateGL){
    var  CnMonthStr=new Array("零","正","二","三","四","五","六","七","八","九","十","冬","腊");
    var  Month;
    Month = parseInt(CnDateofDate(DateGL)/100);
    if (Month < 0){
    return "闰" + CnMonthStr[-Month] + "月";
    }else{
    return CnMonthStr[Month] + "月";
    }
    }
    function CnDayofDate(DateGL){
    var CnDayStr=new Array("零",
    "初一", "初二", "初三", "初四", "初五",
    "初六", "初七", "初八", "初九", "初十",
    "十一", "十二", "十三", "十四", "十五",
    "十六", "十七", "十八", "十九", "二十",
    "廿一", "廿二", "廿三", "廿四", "廿五",
    "廿六", "廿七", "廿八", "廿九", "三十");
    var Day;
    Day = (Math.abs(CnDateofDate(DateGL)))%100;
    return CnDayStr[Day];
    }
    function DaysNumberofMonth(DateGL){
    var MM1= DateGL.getFullYear();
    var MM2=MM1;
    MM1+="/"+(DateGL.getMonth()+1);
    MM2+="/"+(DateGL.getMonth()+2);
    MM1+="/1";
    MM2+="/1";
    return parseInt((Date.parse(MM2)-Date.parse(MM1))/86400000);
    }
    function CnEra(YYYY){
    var Tiangan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
    //var Dizhi=new Array("子(鼠)","丑(牛)","寅(虎)","卯(兔)","辰(龙)","巳(蛇)",
                        //"午(马)","未(羊)","申(猴)","酉(鸡)","戌(狗)","亥(猪)");
    var Dizhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
    return Tiangan[YYYY%10]+Dizhi[YYYY%12];
    }
    function CnDateofDateStr(DateGL){
      if(CnMonthofDate(DateGL)=="零月") return " 请调整您的计算机日期!";
      else return "&nbsp;农历"+CnYearofDate(DateGL)+ "&nbsp;" + CnMonthofDate(DateGL) + CnDayofDate(DateGL) + "&nbsp;" + SolarTerm(DateGL);
    }
    function SolarTerm(DateGL){
    var SolarTermStr=new Array(
    "小寒","大寒","立春","雨水","惊蛰","春分",
    "清明","谷雨","立夏","小满","芒种","夏至",
    "小暑","大暑","立秋","处暑","白露","秋分",
    "寒露","霜降","立冬","小雪","大雪","冬至");
    var DifferenceInMonth=new Array(
    1272060,1275495,1281180,1289445,1299225,1310355,
    1321560,1333035,1342770,1350855,1356420,1359045,
    1358580,1355055,1348695,1340040,1329630,1318455,
    1306935,1297380,1286865,1277730,1274550,1271556);
    var DifferenceInYear=31556926;
    var BeginTime=new Date(1901/1/1);
    BeginTime.setTime(947120460000);
    for(;DateGL.getFullYear()<BeginTime.getFullYear();){
    BeginTime.setTime(BeginTime.getTime()-DifferenceInYear*1000);
    }
    for(;DateGL.getFullYear()>BeginTime.getFullYear();){
    BeginTime.setTime(BeginTime.getTime()+DifferenceInYear*1000);
    }
    for(var M=0;DateGL.getMonth()>BeginTime.getMonth();M++){
    BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
    }
    if(DateGL.getDate()>BeginTime.getDate()){
    BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
    M++;
    }
    if(DateGL.getDate()>BeginTime.getDate()){
    BeginTime.setTime(BeginTime.getTime()+DifferenceInMonth[M]*1000);
    M==23?M=0:M++;
    }
    var JQ;
    if(DateGL.getDate()==BeginTime.getDate()){
    JQ="今日<font color='#F08080'><b>"+SolarTermStr[M] + "</b></font>";
    }else if(DateGL.getDate()==BeginTime.getDate()-1){
    JQ="明日<font color='#F08080'><b>"+SolarTermStr[M] + "</b></font>";
    }else if(DateGL.getDate()==BeginTime.getDate()-2){
    JQ="后日<font color='#F08080'><b>"+SolarTermStr[M] + "</b></font>";
    }else{
    JQ=" "
    if(DateGL.getMonth()==BeginTime.getMonth()){
    JQ+="本月";
    }else{
    JQ+="下月";
    }
    JQ+=BeginTime.getDate()+"日"+"<font color='#F08080'><b>"+SolarTermStr[M]+"</b></font>";
    }
    return JQ;
    }
    function CAL()
    {}
    //RunGLNL();
    function CurentTime(){ 
    var now = new Date(); 
    var hh = now.getHours(); 
    var mm = now.getMinutes(); 
    var ss = now.getTime() % 60000; 
    ss = (ss - (ss % 1000)) / 1000; 
    var clock = hh+':'; 
    if (mm < 10) clock += '0'; 
    clock += mm+':'; 
    if (ss < 10) clock += '0'; 
    clock += ss; 
    return(clock); 
    }
    调用
    alert(CnDateofDateStr(new Date()));