现在的位置: 首页 > 综合 > 正文

农历时间

2018年02月15日 ⁄ 综合 ⁄ 共 5325字 ⁄ 字号 评论关闭

js代码如下

 

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)];
    /* 民国年月日 */
    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 week = new initArray("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    var minutes = today.getMinutes();
    if (minutes < 10) {
        minutes = "0" + minutes;
    }
    else {
        minutes = minutes;
    }
    var seconds = today.getSeconds();
    if (seconds < 10) {
        seconds = "0" + seconds;
    }
    else {
        seconds = seconds;
    }
    var hms = today.getHours() + ":" + minutes + ":" + seconds;
    //    document.write("", today.getYear(), "年", today.getMonth() + 1, "月", today.getDate(), "日&nbsp;", d[today.getDay() + 1], "");
    months = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二"];
    days = ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十"];
    var ymd = SolarYear + "年" + SolarMonth + "月";
    var day = today.getDate();
    // document.write("<div class='rili'>" + ymd + "</div> <div class='rili_date'  style='font-family: Arial Black;font-size:18pt;color:#FFF' >" + day + "</div> <div class='rili_xq' id='days'>" + week[today.getDay() + 1]);
    // document.write("农历" + months[LunarMonth - 1] + "月" + days[LunarDate - 1] + "<br>"+hms+"</div>");

    document.getElementById("ymds").innerHTML = ymd;
    document.getElementById("rili").innerHTML = day;
    document.getElementById("dayxq").innerHTML = week[today.getDay() + 1] + "农历" + months[LunarMonth - 1] + "月" + days[LunarDate - 1] + "</br>" + hms;
    setInterval("CalConv()", 1000);
}
/* 是否有闰年, 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日) */
}

 

aspx页面如下

 

<div class="rili" id="ymds"></div>
<div class="rili_date" id="rili"  style="font-family: Arial Black;font-size:18pt;color:#FFF" ></div>
                 <div class='rili_xq' id='dayxq'></div>

【上篇】
【下篇】

抱歉!评论已关闭.