Home Web Front-end JS Tutorial Very useful js calendar algorithm detailed code_javascript skills

Very useful js calendar algorithm detailed code_javascript skills

May 16, 2016 pm 05:40 PM
js

Copy code The code is as follows:

<script type="text/javascript">
        var lunarInfo = new Array(
0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,
0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,
0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,
0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,
0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,
0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5d0, 0x14573, 0x052d0, 0x0a9a8, 0x0e950, 0x06aa0,
0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,
0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6,
0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,
0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0x0ab60, 0x096d5, 0x092e0,
0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,
0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,
0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,
0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,
0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0)
        var Animals = new Array("鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪");
        var Gan = new Array("甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸");
        var Zhi = new Array("子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥");
        var now = new Date();
        var SY = now.getFullYear();
        var SM = now.getMonth();
        var SD = now.getDate();

        //==== 传入 offset 传回干支, 0=甲子 
        function cyclical(num) { return (Gan[num % 10] Zhi[num % 12]) }

        //==== 传回农历 y年的总天数 
        function lYearDays(y) {
            var i, sum = 348
            for (i = 0x8000; i > 0x8; i >>= 1) sum = (lunarInfo[y - 1900] & i) ? 1 : 0
            return (sum leapDays(y))
        }

        //==== 传回农历 y年闰月的天数 
        function leapDays(y) {
            if (leapMonth(y)) return ((lunarInfo[y - 1900] & 0x10000) ? 30 : 29)
            else return (0)
        }

        //==== 传回农历 y年闰哪个月 1-12 , 没闰传回 0 
        function leapMonth(y) { return (lunarInfo[y - 1900] & 0xf) }

        //====================================== 传回农历 y年m月的总天数 
        function monthDays(y, m) { return ((lunarInfo[y - 1900] & (0x10000 >> m)) ? 30 : 29) }

//==== Calculate the lunar calendar, pass in the date object, return the lunar date object
// The properties of this object are .year .month .day .isLeap .yearCyl .dayCyl .monCyl
Function Lunar(objDate) {
var i, leap = 0, temp = 0
var baseDate = new Date(1900, 0, 31)
var offset = (objDate - baseDate) / 864 00000

this.dayCyl = offset 40
this.monCyl = 14

for (i = 1900; i < 2050 && offset > 0; i ) {
        temp = lYearDays( i)
offset -= temp
this.monCyl = 12
}
if (offset < 0) {
offset = temp;
i--;
this .monCyl -= 12
                                                                                                                Month
this.isLeap = false

for (i = 1; i < 13 && offset > 0; i ) {
//Leap month
leap 1) && this.isLeap == false)
                                                                                                                                                ​ , i);}
// Lie the month
if (this.isleap == true && i == (leap 1)) this.isleap = false

offset- = temp
                                                                                                                                                                       . If (this. isLeap)
{ this.isLeap = false; }
else
{ this.isLeap = true; --i; --this.monCyl; }

if (offset < 0 ) { offset = temp; --i; --this.monCyl; }

this.month = i
this.day = offset 1
}

function YYMMDD() {
var cl = '<font color="#0000df" STYLE="font-size:9pt;">';
if (now.getDay( ) == 0) cl = '<font color="#c00000" STYLE="font-size:9pt;">';
       if (now.getDay() == 6) cl = '< font color="#00c000" STYLE="font-size:9pt;">';
return (cl SY 'Year' (SM 1) 'Month' SD 'Day</font>');
                                                                                                                                                                                           
         var cl = '<font color="#000000" STYLE="font-size:9pt;">';
               if (now.getDay() == 0) cl = '<font color="#ff0000" STYLE="font-size:9pt;">';
    if (now.getDay() == 6) cl = '<font color="#ff0000" STYLE="font -size:9pt;">';
            return (cl day[now.getDay()] '</font>');
                                                             > function cDay(m, d) {
var nStr1 = new Array('Day', '一', '二', '三', '四', '五', '六', '七', 'Eight', 'Nine', 'Ten');
var nStr2 = new Array('Chu', 'Ten', 'Twenty', '卅', '');
var s;
                                                                                                                                                                                                                                      = 'Tenth day'; break;
case 20: s = 'twenty'; break;
case 30: s = 'thirty'; break;
default: s = nStr2[Math.floor (d / 10)]; s = nStr1[d % 10]; var sDObj = new Date(SY, SM, SD);
var lDObj = new Lunar(sDObj);
var cl = '<font color="#000066" STYLE="font-size:9pt;">' ;
                  // Lunar calendar BB' (cld[d].isLeap?'Leap':' ') cld[d].lMonth ' month ' cld[d].lDay ' day                                                                       cDay(lDObj.month, lDObj.day);
               return (cl tt '</font>');
                
function solarDay3() {
var sTermInfo = new Array(0, 21208, 42467, 63836, 85337, 107014, 128867, 150921, 173149,

195551, 218072, 240693, 263343, 285989 , 308563, 331033, 353350, 375494, 397447, 419210,

440795, 462224, 483532, 504758)
var solarTerm = new Array("小汉" , "big cold", "beginning of spring", "rain ", "Jingzhe", "Vernal Equinox", "Qingming", "Grain Rain", "Beginning of Summer", "Xiaoman", "Grain of Ear", "Summer Solstice", "Small Heat", "Great Heat", "Beginning of Autumn", "End of Heat", "White Dew", "Autumnal Equinox", "Cold Dew", "Frost Descent", "Beginning of Winter", "Light Snow", "Heavy Snow", "Winter Solstice")
                                                                                                                                                                    . Festival", "0505 Dragon Boat Festival", "0707 Chinese Valentine's Day", "0715 Chinese Ghost Festival", "0815 Mid-Autumn Festival", "0909 Double Ninth Festival", "1208 Laba Festival", "1224 Xiaonian", "0100* New Year's Eve")
var sFtv = new Array("0101*New Year's Day", "0214 Valentine's Day", "0308 Women's Day", "0312 Arbor Day", "0315 Consumer Rights Day", "0401 April Fool's Day", "0501 Labor Day", "0504 Youth Day", "0512 Nurses Day", "0601 Children's Day", "0701 Party Founding Day to commemorate the return of Hong Kong",
"0801 Army Day", "0808 Father's Day", " 0909 Nansheng.com Anniversary", "0910 Teacher's Day", "0928 Confucius' Birthday", "1001*National Day",
"1006 Elder's Day", "1024 United Nations Day", "1112 Sun Yat-sen's Birthday", " 1220 Commemoration of Macau's Return", "1225 Christmas", "1226 Chairman Mao's Birthday")

var sDObj = new Date(SY, SM, SD);
var lDObj = new Lunar(sDObj);
var lDPOS = new Array(3)
var festival = '', solarTerms = '', solarFestival = '', lunarFestival = '', tmp1, tmp2;
//Lunar Festival
for (i in lFtv)
if (lFtv[i].match(/^(d{2})(.{2})([s*])(. )$/)) {
tmp1 = Number(RegExp.$1) - lDObj.month
tmp2 = Number(RegExp.$2) - lDObj.day
if (tmp1 == 0 && tmp2 == 0) lunarFestival = RegExp.$4 🎜>                                                                                                                                    🎜>                                                                                                                                                                          )$/)) {
tmp1 = Number(RegExp.$1) - (SM 1)
tmp2 = Number(RegExp.$2) - SD
if (tmp 1 == 0 && tmp2 == 0) solarFestival = RegExp.$4
                                     
            //节气 
            tmp1 = new Date((31556925974.7 * (SY - 1900) sTermInfo[SM * 2 1] * 60000) Date.UTC(1900, 0, 6, 2, 5))
            tmp2 = tmp1.getUTCDate()
            if (tmp2 == SD) solarTerms = solarTerm[SM * 2 1]
            tmp1 = new Date((31556925974.7 * (SY - 1900) sTermInfo[SM * 2] * 60000) Date.UTC(1900, 0, 6, 2, 5))
            tmp2 = tmp1.getUTCDate()
            if (tmp2 == SD) solarTerms = solarTerm[SM * 2]

            if (solarTerms == '' && solarFestival == '' && lunarFestival == '')
                festival = '';
            else
                festival = '<FONT COLOR="#ff0000" STYLE="font-size:9pt;">' solarTerms ' ' solarFestival ' ' lunarFestival '</FONT>';

            var cl = '<font color="#000066" STYLE="font-size:9pt;">';
            return (cl festival '</font>');
        }
        function setCalendar() {

            document.write(YYMMDD() ' ' weekday() ' ' solarDay2() ' ' solarDay3()); 
        }

        setCalendar();
        //--> 

        //获取当月的阳历天数
        function getNowMonthDays(year, month) {
            var isy = false;
            if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0)) isy = true;
            switch (month) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    return 31;
                case 4:
                case 6:
                case 9:
                case 11:
                    return 30;
                case 2:
                    return isy ? 28 : 29;
            }
        }
                                                                                                                                                                                     🎜> var startweek = week 7 - tempnum;
return startweek > 7 ? startweek % 7 : startweek;
}

function getSolar Day(year, month, day ) {
var sDObj = new Date(year, month, day);
var lDObj = new Lunar(sDObj);
var sDObj = new Date (cld[d].isLeap?'Leap': ' ') cld[d].lMonth ' month ' cld[d].lDay ' day
              return cDay(lDObj.month, lDObj.day); 
                                                                  🎜> function showMonth() {
debugger;
var days = getNowMonthDays(SY, SM 1);
var startweek = getStartWeek();
var html = "<tr><td> ;Monday</td><td>Tuesday</td><td>Wednesday</td><td>Thursday</td><td>Friday</td>< td>Saturday</td><td>Sunday</td></tr><tr>"; startweek; i ) {
             html = "<td> </td>"; index; << ;br>" getSolarDay (SY, SM, i) "</td>";
                                          7 == 0) {
                                                                                                     
              html = "</tr>";
                                                                                         


Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot Article Tags

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to use JS and Baidu Maps to implement map pan function How to use JS and Baidu Maps to implement map pan function Nov 21, 2023 am 10:00 AM

How to use JS and Baidu Maps to implement map pan function

Essential tools for stock analysis: Learn the steps to draw candle charts with PHP and JS Essential tools for stock analysis: Learn the steps to draw candle charts with PHP and JS Dec 17, 2023 pm 06:55 PM

Essential tools for stock analysis: Learn the steps to draw candle charts with PHP and JS

Recommended: Excellent JS open source face detection and recognition project Recommended: Excellent JS open source face detection and recognition project Apr 03, 2024 am 11:55 AM

Recommended: Excellent JS open source face detection and recognition project

PHP and JS Development Tips: Master the Method of Drawing Stock Candle Charts PHP and JS Development Tips: Master the Method of Drawing Stock Candle Charts Dec 18, 2023 pm 03:39 PM

PHP and JS Development Tips: Master the Method of Drawing Stock Candle Charts

How to create a stock candlestick chart using PHP and JS How to create a stock candlestick chart using PHP and JS Dec 17, 2023 am 08:08 AM

How to create a stock candlestick chart using PHP and JS

How to use JS and Baidu Maps to implement map polygon drawing function How to use JS and Baidu Maps to implement map polygon drawing function Nov 21, 2023 am 10:53 AM

How to use JS and Baidu Maps to implement map polygon drawing function

How to use JS and Baidu Map to implement map click event processing function How to use JS and Baidu Map to implement map click event processing function Nov 21, 2023 am 11:11 AM

How to use JS and Baidu Map to implement map click event processing function

How to use JS and Baidu Maps to implement map heat map function How to use JS and Baidu Maps to implement map heat map function Nov 21, 2023 am 09:33 AM

How to use JS and Baidu Maps to implement map heat map function

See all articles