首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JS判断当日是否除夕节

2013-01-11 
JS判断当天是否除夕节因为要做一个日历控件,遇到国家法定节假日,日历颜色会改变,因为除夕是每年农历的最后

JS判断当天是否除夕节
因为要做一个日历控件,遇到国家法定节假日,日历颜色会改变,因为除夕是每年农历的最后一天,日期又不确定,不像春节1月1号,端午5月5号,中秋8月15,这些都有明确的日期,而除夕没有,只是最后一天,我如何在JS中判断当天是否是除夕,从而改变日历的颜色。
求大牛,求大神JS判断当日是否除夕节
[解决办法]
<body lang="zh" onload="initial()">
<!--内容 开始-->
<div class="CAL_wid">
<div class="CAL_LN"><div class="CAL_Az"></div><a href="javascript:void(0)" class="CAL_A1" onclick="pushBtm('YU')" title="上一年">上一年</a><a href="javascript:void(0)" class="CAL_A2" title="上一月" onclick="pushBtm('MU')">上一月</a><a href="javascript:void(0)" title="今日" class="CAL_A3" onclick="pushBtm('')"></a><a href="javascript:void(0)" class="CAL_A4" title="下一月" onclick="pushBtm('MD')">下一月</a><a href="javascript:void(0)" class="CAL_A5" title="下一年" onclick="pushBtm('YD')">下一年</a></div>
<!--日历内容区 开始-->
<div class="CAL_div">
  <!--嵌入万年历代码 开始-->
  

<script language=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 solarMonth = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var Gan = new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");
var Zhi = new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");
var Animals = new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");
var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")
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 nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十')
var nStr2 = new Array('初','十','廿','卅',' ')
var monthName = new Array("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");

//国历节日 *表示放假日
var sFtv = new Array(
"0101*元旦",
"0214 情人节",
"0308 妇女节",
"0312 植树节",
"0315 消费者权益日",
"0401 愚人节",
"0501*劳动节",
"0504 青年节",
"0512 护士节",
"0601 儿童节",
"0701 建党节 香港回归纪念",


"0714 初伏",
"0724 中伏",
"0801 建军节",
"0813 末伏",
"0909 毛泽东逝世纪念",
"0910 教师节",
"0928 孔子诞辰",
"1001*国庆节",
"1006 老人节",
"1024 联合国日",
"1112 孙中山诞辰纪念",
"1220 澳门回归纪念",
"1225 圣诞节",
"1226 毛泽东诞辰纪念")

//农历节日 *表示放假日
var lFtv = new Array(
"0101*春节",
"0102*初二",
"0115 元宵节",
"0505*端午节",
"0707 七夕情人节",
"0715 中元节",
"0815*中秋节",
"0909 重阳节",
"1208 腊八节",
"1223 小年",
"0100*除夕")

var wFtv = new Array(
"0520 母亲节", "0630 父亲节")

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))
}

function leapDays(y) {
   if(leapMonth(y))  return((lunarInfo[y-1900] & 0x10000)? 30: 29)
   else return(0)
}

function leapMonth(y) {
   return(lunarInfo[y-1900] & 0xf)
}

function monthDays(y,m) {
   return( (lunarInfo[y-1900] & (0x10000>>m))? 30: 29 )
}

function Lunar(objDate) {

   var i, leap=0, temp=0
   var baseDate = new Date(1900,0,31)
   var offset   = (objDate - baseDate)/86400000

   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
   }

   this.year = i
   this.yearCyl = i-1864

   leap = leapMonth(i)
   this.isLeap = false

   for(i=1; i<13 && offset>0; i++) {
      if(leap>0 && i==(leap+1) && this.isLeap==false)
         { --i; this.isLeap = true; temp = leapDays(this.year); }
      else
         { temp = monthDays(this.year, i); }

      if(this.isLeap==true && i==(leap+1)) this.isLeap = false

      offset -= temp
      if(this.isLeap == false) this.monCyl ++
   }

   if(offset==0 && leap>0 && i==leap+1)
      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 solarDays(y,m) {
   if(m==1)
      return(((y%4 == 0) && (y%100 != 0) 
[解决办法]
 (y%400 == 0))? 29: 28)
   else
      return(solarMonth[m])
}
function cyclical(num) {
   return(Gan[num%10]+Zhi[num%12])
}

function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {

      this.isToday    = false;
      this.sYear      = sYear;
      this.sMonth     = sMonth;
      this.sDay       = sDay;
      this.week       = week;
      this.lYear      = lYear;
      this.lMonth     = lMonth;
      this.lDay       = lDay;
      this.isLeap     = isLeap;
      this.cYear      = cYear;
      this.cMonth     = cMonth;
      this.cDay       = cDay;

      this.color      = '';

      this.lunarFestival = '';
      this.solarFestival = '';
      this.solarTerms    = '';

}

function sTerm(y,n) {
   var offDate = new Date( ( 31556925974.7*(y-1900) + sTermInfo[n]*60000  ) + Date.UTC(1900,0,6,2,5) )
   return(offDate.getUTCDate())
}


[解决办法]
<div id="detail" style="position:absolute;visibility:visible;"></div>
<FORM name=CLD id=CLD>
<table cellSpacing=0 cellPadding=0 align=center border=0>
<tbody>
<tr>
<td class=bs vAlign=top width=>
</td>
<td class=lb vAlign=top width=100%>
<table cellSpacing=0 cellPadding=0 width=100% border=0>
<tbody>
<tr bgColor=#F2F4F4>
<td height=30> &nbsp;<strong>当前查看:</strong><SPAN class=sm><font color=#333399>公历 </font>
<font style="font-SIZE: 9pt" color=#ffffff>
<SELECT onchange=changeCld() name="SY" id="SY"> 
<option>1900</option><option>1901</option><option>1902</option>
<option>1903</option><option>1904</option><option>1905</option>
<option>1906</option><option>1907</option><option>1908</option>


<option>1909</option><option>1910</option><option>1911</option>
<option>1912</option><option>1913</option><option>1914</option>
<option>1915</option><option>1916</option><option>1917</option>
<option>1918</option><option>1919</option><option>1920</option>
<option>1921</option><option>1922</option><option>1923</option>
<option>1924</option><option>1925</option><option>1926</option>
<option>1927</option><option>1928</option><option>1929</option>
<option>1930</option><option>1931</option><option>1932</option>
<option>1933</option><option>1934</option><option>1935</option>
<option>1936</option><option>1937</option><option>1938</option>
<option>1939</option><option>1940</option><option>1941</option>
<option>1942</option><option>1943</option><option>1944</option>
<option>1945</option><option>1946</option><option>1947</option>
<option>1948</option><option>1949</option><option>1950</option>
<option>1951</option><option>1952</option><option>1953</option>
<option>1954</option><option>1955</option><option>1956</option>
<option>1957</option><option>1958</option><option>1959</option>
<option>1960</option><option>1961</option><option>1962</option>
<option>1963</option><option>1964</option><option>1965</option>
<option>1966</option><option>1967</option><option>1968</option>
<option>1969</option><option>1970</option><option>1971</option>
<option>1972</option><option>1973</option><option>1974</option>
<option>1975</option><option>1976</option><option>1977</option>
<option>1978</option><option>1979</option><option>1980</option>
<option>1981</option><option>1982</option><option>1983</option>
<option>1984</option><option>1985</option><option>1986</option>
<option>1987</option><option>1988</option><option>1989</option>
<option>1990</option><option>1991</option><option>1992</option>
<option>1993</option><option>1994</option><option>1995</option>
<option>1996</option><option>1997</option><option>1998</option>
<option>1999</option><option>2000</option><option>2001</option>
<option>2002</option><option>2003</option><option>2004</option>
<option>2005</option><option>2006</option><option>2007</option>
<option selected>2008</option>
<option>2009</option><option>2010</option><option>2011</option>
<option>2012</option><option>2013</option><option>2014</option>
<option>2015</option><option>2016</option><option>2017</option>
<option>2018</option><option>2019</option><option>2020</option>
<option>2021</option><option>2022</option><option>2023</option>


<option>2024</option><option>2025</option><option>2026</option>
<option>2027</option><option>2028</option><option>2029</option>
<option>2030</option><option>2031</option><option>2032</option>
<option>2033</option><option>2034</option><option>2035</option>
<option>2036</option><option>2037</option><option>2038</option>
<option>2039</option><option>2040</option><option>2041</option>
<option>2042</option><option>2043</option><option>2044</option>
<option>2045</option><option>2046</option><option>2047</option>
<option>2048</option><option>2049</option>
</SELECT> 
</font>
<font color=#333399>年 </font>
<font style="font-size: 9pt" color=#ffffff>
<select onchange="changeCld()" name=SM id="SM">
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>6</option>
<option>7</option>
<option>8</option>
<option>9</option>
<option>10</option>
<option>11</option>
<option>12</option>
 </select> 
 </font></SPAN><font style="font-SIZE: 9pt" color=#ffffff></font><SPAN class=sm><font color=#333399>月</font></font><font class=sm id=GZ><font color=#333399>&nbsp;&nbsp;农历戊子年 &nbsp;</font><SPAN class=smlb><font color=#0099ff>&nbsp;【</SPZN><SPAN class=smlb>鼠</SPAN><SPAN class=smlb>】</SPAN></font></SPAN></font><font color=#333399> </font></SPAN></td></tr></TBODY></table>
<table cellSpacing=1 cellPadding=0 width="100%" border=0>
<TBODY>
<tr>
<td vAlign=bottom>
<table cellSpacing=0 cellPadding=0 width="100%" border=0>
<TBODY>
<tr>
<td>
<table cellSpacing=1 cellPadding=0 width=100% align=center border=0>
<TBODY>
<tr>
<td class=ch align=middle height=40>
<table height="40" cellSpacing=3 cellPadding=0 width=100% border=0>
<TBODY>
<tr class=sunday align=middle>
<td width=57 class="weekend_ms">日</td>
<td width=57>一</td>
<td width=57>二</td>
<td width=57>三 </td>
<td width=57>四</td>
<td width=57>五</td>
<td width=57 class="weekend_ms">六</td>
</tr></TBODY></table></td></tr>

<SCRIPT language=JavaScript><!--
var gNum
for(i=0;i<6;i++) {
   document.write(' <tr><td align=middle bgColor=#fafbfb height=40><table class="cal_day_NO" cellSpacing=1 cellPadding=0><TBODY><tr align=middle> ')
   for(j=0;j<7;j++) {
  gNum = i*7+j
  document.write('<td align="center" id="SD' + gNum +'" onMouseOver="mOvr(event, ' + gNum +')" onMouseOut="mOut(event)" width="57" style="BACKGROUND: none transparent scroll repeat 0% 0%; cursor : default; COLOR: #ff5f08" TITLE=""')


  if(j == 0){
document.write(' class="aorange"')
  }else if(j == 6){
 if(i%2==1) document.write(' class="aorange"')
else document.write(' class="agreen"')
  }else{
document.write(' class="one"')
  }
  document.write(' TITLE=""> </td>')
   }
   document.write('</tr></table></td></tr><tr><td height="20" align="middle" bgcolor="#F3F5F8"><table class="cal_day_jr" cellSpacing=1 cellPadding=0><TBODY><tr align="center"> ')
   for(j=0;j<7;j++) {
  gNum = i*7+j
  document.write('<td align="center" id="LD' + gNum +'" onMouseOver="mOvr(event,' + gNum +')" onMouseOut="mOut()" width="57" class="bs" TITLE="" style="BACKGROUND: none transparent scroll repeat 0% 0%; cursor : default; COLOR: #666666"> </td>')
   }
   document.write('</tr></table></td></tr>')
}
//--></SCRIPT>
</tbody></table></td></tr></tbody></table></td></tr></tbody></table></td>
<td valign=top></td></tr></form></tbody></table>  
  <!--嵌入万年历代码 结束-->
</div>
<!--日历内容区 结束-->
</div>

</body>
[解决办法]

引用:
引用:下面是获取当天的农历,余下的事情你看着办吧。
JavaScript code?12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686……

我有点不解。既然阳历可以转换成阴历,我们可以把今天、明天转换成阴历,如果两个阴历的年份不一样,就说明今天是除夕。这难道不可行么?
[解决办法]
有了点空完善了下,现在的代码是直接可用的了。楼主结贴吧。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
    //------------------- Begin ----------------------
    CalendarHelper={};
    CalendarHelper.GetCNDate = function (D) {
        var CalendarData = new Array(100);
        var madd = new Array(12);
        var tgString = "甲乙丙丁戊己庚辛壬癸";
        var dzString = "子丑寅卯辰巳午未申酉戌亥";
        var numString = "一二三四五六七八九十";
        var monString = "正二三四五六七八九十冬腊";
        var weekString = "日一二三四五六";
        var sx = "鼠牛虎兔龙蛇马羊猴鸡狗猪";
        var cYear, cMonth, cDay, TheDate;


        CalendarData = new Array(0xA4B, 0x5164B, 0x6A5, 0x6D4, 0x415B5, 0x2B6, 0x957, 0x2092F, 0x497, 0x60C96, 0xD4A, 0xEA5, 0x50DA9, 0x5AD, 0x2B6, 0x3126E, 0x92E, 0x7192D, 0xC95, 0xD4A, 0x61B4A, 0xB55, 0x56A, 0x4155B, 0x25D, 0x92D, 0x2192B, 0xA95, 0x71695, 0x6CA, 0xB55, 0x50AB5, 0x4DA, 0xA5B, 0x30A57, 0x52B, 0x8152A, 0xE95, 0x6AA, 0x615AA, 0xAB5, 0x4B6, 0x414AE, 0xA57, 0x526, 0x31D26, 0xD95, 0x70B55, 0x56A, 0x96D, 0x5095D, 0x4AD, 0xA4D, 0x41A4D, 0xD25, 0x81AA5, 0xB54, 0xB6A, 0x612DA, 0x95B, 0x49B, 0x41497, 0xA4B, 0xA164B, 0x6A5, 0x6D4, 0x615B4, 0xAB6, 0x957, 0x5092F, 0x497, 0x64B, 0x30D4A, 0xEA5, 0x80D65, 0x5AC, 0xAB6, 0x5126D, 0x92E, 0xC96, 0x41A95, 0xD4A, 0xDA5, 0x20B55, 0x56A, 0x7155B, 0x25D, 0x92D, 0x5192B, 0xA95, 0xB4A, 0x416AA, 0xAD5, 0x90AB5, 0x4BA, 0xA5B, 0x60A57, 0x52B, 0xA93, 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() {
            TheDate = (arguments.length != 3) ? new Date() : new Date(arguments[0], arguments[1], arguments[2]);
            var total, m, n, k;
            var isEnd = false;
            var tmp = TheDate.getYear();
            if (tmp < 1900) {
                tmp += 1900;
            }
            total = (tmp - 1921) * 365 + Math.floor((tmp - 1921) / 4) + madd[TheDate.getMonth()] + TheDate.getDate() - 38;

            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 = 1921 + 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--;
                }
            }
        }

        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);
            }
            return tmp;
        }

        function GetLunarDay(solarYear, solarMonth, solarDay) {
            //solarYear = solarYear<1900?(1900+solarYear):solarYear;
            if (solarYear < 1921 
[解决办法]
 solarYear > 2020) {
                return "";
            } else {
                solarMonth = (parseInt(solarMonth) > 0) ? (solarMonth - 1) : 11;
                e2c(solarYear, solarMonth, solarDay);
                return GetcDateString();
            }
        }

        var yy = D.getFullYear();
        var mm = D.getMonth() + 1;
        var dd = D.getDate();
        var ww = D.getDay();
        var ss = parseInt(D.getTime() / 1000);
        if (yy < 100) yy = "19" + yy;

        return GetLunarDay(yy, mm, dd);
    };

    CalendarHelper.GetAddDay = function (D, v) {
        var LSTR_ndate = D;
        var LSTR_Year = LSTR_ndate.getYear();


        var LSTR_Month = LSTR_ndate.getMonth();
        var LSTR_Date = LSTR_ndate.getDate();
        //处理
        var uom = new Date(LSTR_Year, LSTR_Month, LSTR_Date);
        uom.setDate(uom.getDate() + v); //取得系统时间的前一天,重点在这里,负数是前几天,正数是后几天
        return uom;
    }
    //是否除夕
    CalendarHelper.IsLastDayBeforeNewYearOfCN = function (D) {
        var strCurrDay = CalendarHelper.GetCNDate(D);
        var strNextDay = CalendarHelper.GetCNDate(CalendarHelper.GetAddDay(D, 1));
        //alert(strCurrDay+","+strNextDay);
        return strCurrDay.split('年')[0] != strNextDay.split('年')[0];
    };
    //是否春节
    CalendarHelper.IsNewYearOfCN = function (D) {
        var strCurrDay = CalendarHelper.GetCNDate(D);
        var strPrevDay = CalendarHelper.GetCNDate(CalendarHelper.GetAddDay(D, -1));
        //alert(strCurrDay+","+strPrevDay);
        return strCurrDay.split('年')[0] != strPrevDay.split('年')[0];
    };
    //------------------- End ----------------------

    var d1 = new Date();
    var d2 = new Date(2013, 1, 9); //注:此处相当于2013年2月9号
    var d3 = new Date(2013, 1, 10);

    var result = GetResult(d1) + GetResult(d2) + GetResult(d3);
    alert(result);

    function GetResult(D) {
        var y = D.getFullYear();
        var m = D.getMonth() + 1;
        var dd = D.getDate();
        var str = y + "年" + m + "月" + dd + "日";
        var isR = CalendarHelper.IsLastDayBeforeNewYearOfCN(D);
        var isN = CalendarHelper.IsNewYearOfCN(D);

        return "日期:"+str+","+ (isR?"是":"不是") + "除夕" + "," + (isN?"是":"不是") + "春节\n\n" ;
    }
</script>
</head>
<body>
</body>
</html>

热点排行
Bad Request.