Very useful js calendar algorithm detailed code_javascript skills
May 16, 2016 pm 05:40 PM<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>";

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

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

Recommended: Excellent JS open source face detection and recognition project

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 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 Maps to implement map heat map function
