javascript农历

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>日期时间带星期农历js代码</title>
</head>

 

<body>
<script>
    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   totalmnk;
        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);
</script>


</body>
</html>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值