zoukankan      html  css  js  c++  java
  • 当前日期的显示为农历

    1.js代码

      <script>
      function CalConv()
     {
        FIRSTYEAR = 1998;
        LASTYEAR = 2031;

        today = new Date();
        SolarYear = today.getFullYear();
        SolarMonth = today.getMonth() + 1;
        SolarDate = today.getDate();
        Weekday = today.getDay();
        LunarCal = [
     new tagLunarCal( 27, 5, 3, 43, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 ),
     new tagLunarCal( 46, 0, 4, 48, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1 ), /* 88 */
     new tagLunarCal( 35, 0, 5, 53, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1 ), /* 89 */
     new tagLunarCal( 23, 4, 0, 59, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 42, 0, 1, 4, 1, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 31, 0, 2, 9, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0 ),
     new tagLunarCal( 21, 2, 3, 14, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1 ), /* 93 */
     new tagLunarCal( 39, 0, 5, 20, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 28, 7, 6, 25, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1 ),
     new tagLunarCal( 48, 0, 0, 30, 0, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 1 ),
     new tagLunarCal( 37, 0, 1, 35, 1, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1 ), /* 97 */
     new tagLunarCal( 25, 5, 3, 41, 1, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ),
     new tagLunarCal( 44, 0, 4, 46, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1 ),
     new tagLunarCal( 33, 0, 5, 51, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 22, 4, 6, 56, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ), /* 101 */
     new tagLunarCal( 40, 0, 1, 2, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 ),
     new tagLunarCal( 30, 9, 2, 7, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 49, 0, 3, 12, 0, 1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 38, 0, 4, 17, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0 ), /* 105 */
     new tagLunarCal( 27, 6, 6, 23, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1 ),
     new tagLunarCal( 46, 0, 0, 28, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0 ),
     new tagLunarCal( 35, 0, 1, 33, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ),
     new tagLunarCal( 24, 4, 2, 38, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1 ), /* 109 */
     new tagLunarCal( 42, 0, 4, 44, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 31, 0, 5, 49, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0 ),
     new tagLunarCal( 21, 2, 6, 54, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1 ),
     new tagLunarCal( 40, 0, 0, 59, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1 ), /* 113 */
     new tagLunarCal( 28, 6, 2, 5, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0 ),
     new tagLunarCal( 47, 0, 3, 10, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1 ),
     new tagLunarCal( 36, 0, 4, 15, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 1 ),
     new tagLunarCal( 25, 5, 5, 20, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 ), /* 117 */
     new tagLunarCal( 43, 0, 0, 26, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ),
     new tagLunarCal( 32, 0, 1, 31, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0 ),
     new tagLunarCal( 22, 3, 2, 36, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0 ) ];
     /* 民国年月日 Codes by / */
     SolarCal = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ];
    SolarDays = [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365, 396, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366, 397 ];
        
        
        if ( SolarYear <= FIRSTYEAR || SolarYear > LASTYEAR ) return 1;
        sm = SolarMonth - 1;
            if ( sm < 0 || sm > 11 ) return 2;
            leap = GetLeap( SolarYear );
        if ( sm == 1 )
            d = leap + 28;
        else
            d = SolarCal[sm];
        if ( SolarDate < 1 || SolarDate > d ) return 3;
        y = SolarYear - FIRSTYEAR;
        acc = SolarDays[ leap*14 + sm ] + SolarDate;
        kc = acc + LunarCal[y].BaseKanChih;
        Kan = kc % 10;
        Chih = kc % 12;
        
        Age = kc % 60;
        if ( Age < 22 )
            Age = 22 - Age;
        else
            Age = 82 - Age;
        
        if ( acc <= LunarCal[y].BaseDays ) {
            y--;
            LunarYear = SolarYear - 1;
            leap = GetLeap( LunarYear );
            sm += 12;
            acc = SolarDays[leap*14 + sm] + SolarDate;
         }
        else
            LunarYear = SolarYear;
                l1 = LunarCal[y].BaseDays;
        for ( i=0; i<13; i++ ) {
            l2 = l1 + LunarCal[y].MonthDays[i] + 29;
            if ( acc <= l2 ) break;
            l1 = l2;
         }
        LunarMonth = i + 1;
        LunarDate = acc - l1;
        im = LunarCal[y].Intercalation;
        if ( im != 0 && LunarMonth > im ) {
            LunarMonth--;
            if ( LunarMonth == im ) LunarMonth = -im;
         }
        if ( LunarMonth > 12 ) LunarMonth -= 12;
     today=new Date();
     function initArray(){
     this.length=initArray.arguments.length
     for(var i=0;i<this.length;i++)
     this[i+1]=initArray.arguments[i] }
     var d=new initArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
     document.write("", today.getYear(),"年",today.getMonth()+1,"月",today.getDate(),"日&nbsp;",d[today.getDay()+1],"");
     
     months = ["一","二","三","四","五","六","七","八","九","十","十一","十二"];
     
     days = ["初一","初二","初三","初四","初五","初六","初七","初八","初九","初十","十一","十二","十三","十四","十五","十六","十七","十八","十九","二十","廿一","廿二","廿三","廿四","廿五","廿六","廿七","廿八","廿九","三十"];
     document.write( "&nbsp;农历"+months[LunarMonth-1]+"月" + days[LunarDate-1] + "");
     return 0;
    }
     /* 是否有闰年, 0 平年, 1 闰年 */
    function GetLeap( year )
     {
     if ( year % 400 == 0 )
     return 1;
     else if ( year % 100 == 0 )
     return 0;
     else if ( year % 4 == 0 )
     return 1;
     else
     return 0;
     }
    function tagLunarCal( d, i, w, k, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13) {
     this.BaseDays = d;
     this.Intercalation = i; /* 0代表此年沒有闰月 */
     this.BaseWeekday = w; /* 民国1月1日星期減 1 */
     this.BaseKanChih = k; /* 民国1月1日干支序号减 1 */
     this.MonthDays = [ m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11, m12, m13 ]; /* 此農曆年每月之大小, 0==小月(29日), 1==大月(30日) */
    }

    document.write(CalConv());
      </script>

  • 相关阅读:
    《C语言 — 字符串数组和字符串指针数组的区别》
    《Ubuntu — NetworkManager开机提示A start job is running for Network Manager wait online (29s / no limit) 等待30s解决办法》
    《海思制作新文件系统》
    《Linux应用多线程(一) — 线程的同步与互斥机制》
    《Linux应用多线程(一) — 线程的概念及实现》
    《海思移植rsync和openssh-server》
    《海思设置root密码》
    <转载>ford-fulkerson算法2
    <转载>ford-fulkerson算法
    <转载>关系规范化之求最小函数依赖集(最小覆盖)
  • 原文地址:https://www.cnblogs.com/linsu/p/3454173.html
Copyright © 2011-2022 走看看