① 求教js農歷閏月演算法
你指的是陰歷吧?陰歷這樣算,需要一個字典表:
varlunarLeapMonthOfYear=function(year){
vartable=[
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
];
returntable[year-1900]&0xf;
}
lunarLeapMonthOfYear(2004);//2004年陰歷閏二月
lunarLeapMonthOfYear(2000);//2000年陰歷閏四月
lunarLeapMonthOfYear(2001);//2001年沒有閏月
② 需要一個js編寫的月歷
<!DOCTYPEHTML>
<htmllang="en">
<head>
<metahttp-equiv="X-UA-Compatible"content="IE=edge,chrome=1"/>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>test</title>
<linkrel="stylesheet"href="css.css"type="text/css"media="screen">
<scriptsrc="http://libs..com/jquery/1.7.0/jquery.min.js"></script>
</head>
<body>
<inputclass="test"value=""style="paddind-top:100px;padding-left:100px;"/>
<inputclass="test"value=""style="margin-top:100px;margin-left:100px;"/>
<styletype="text/css">
#SimpleCanleder_Year_Month*{margin:0px;padding:0px;}
#SimpleCanleder_Year_Month察慧亂.clear{clear:both;}
#SimpleCanleder_Year_Month{width:140px;font-size:14px;line-height:14px;border:1pxsolidlavender;padding:10px;padding-top:5px;padding-right:5px;position:absolute;background-color:white;}
#SimpleCanleder_Year_Month.title{height:35px;}
#SimpleCanleder_Year_Month.titleli.middle{width:65px;position:relative;overflow:visible;}
#SimpleCanleder_Year_Month.titleli.middleselect{margin-top:-3px}
#SimpleCanleder_Year_Month.titleli.middle.year_list{width:100px;position:absolute;background-color:lightgrey;left:-20px}
#SimpleCanleder_Year_Month.titleli.middle.year_listli{background-color:transparent;text-align:center;width:45px;height:20px;}
#SimpleCanleder_Year_Month.titleli.middle.year_listul{clear:both;}
#SimpleCanleder_Year_Month.titleli,#SimpleCanleder_Year_Month.bodyli{background-color:lavender;list-style:none;碧粗width:30px;height:30px;overflow:hidden;margin-top:5px;margin-right:5px;float:left;display:inline;cursor:pointer}
#SimpleCanleder_Year_Month.titleli.cur,#SimpleCanleder_Year_Month.bodyli.cur{background-color:tomato;}
敗檔#SimpleCanleder_Year_Month.titleli.over,#SimpleCanleder_Year_Month.bodyli.over{background-color:lightblue;}
#SimpleCanleder_Year_Month.titleli.inner,#SimpleCanleder_Year_Month.bodyli.inner{padding-top:8px;text-align:center;}
#SimpleCanleder_Year_Month.bottom{height:16px;padding-top:5px;text-align:center}
#SimpleCanleder_Year_Month.bottombutton.clear{background-color:gainsboro;border:1pxsolid;font-size:12px;}
</style>
<scripttype="text/javascript">
(function($){
$.simpleCanleder=function(box,options){
var_canlederBox="#SimpleCanleder_Year_Month";
var_title_ul_li=".titleli";
box=$(box);
varbox_height=parseFloat(box.height());
varbox_width=parseFloat(box.width());
varboxOffset=box.offset();
varcanlederBox=null;
box.click(function(){
canlederBox=$(_canlederBox);
if($(canlederBox).size()>0){
$(canlederBox).show();
}else{
_buildCanlederBox();
$("body").append(canlederBox);
$(document).click(function(e){
varpointX=e.pageX;
varpointY=e.pageY;
var$box=canlederBox.data("box");
varisCanlederBox=$(e.target).parents(_canlederBox);
if(canlederBox.is(":visible")&&$box&&e.target!=$box[0]&&isCanlederBox.size()<=0){
varoffset=canlederBox.offset();
vartop=offset.top-4;
varleft=offset.left-4;
varheight=top+parseFloat(canlederBox.outerHeight())+4;
varwidth=left+parseFloat(canlederBox.outerWidth())+4;
if(pointX>left&&pointY>top&&
pointX<width&&pointY<height){
}else{
canlederBox.hide();
}
}
});
}
canlederBox.css({"top":boxOffset.top+box_height+6,"left":boxOffset.left});
canlederBox.data("box",box);
_init();
});
function_init(){
varnow=newDate();
varyear=now.getFullYear();
varmonth=now.getMonth()+1;
if(box.val()){
year=box.val().split("-")[0]*1;
month=box.val().split("-")[1]*1;
}
canlederBox.find(_title_ul_li).eq(1).find("div.inner").html(_getSelect(year));
canlederBox.find(".bodyli").each(function(){
if($(this).text()==month){
$(this).addClass("cur");
}else{
$(this).removeClass("cur");
};
});
}
function_buildCanlederBox(){
canlederBox=$("<div/>");
canlederBox.attr("id","SimpleCanleder_Year_Month");
_buildTitle(canlederBox);
_buildBody(canlederBox);
canlederBox.append($("<div/>").addClass("clear"));
_buildBottom(canlederBox);
};
function_buildTitle(canlederBox){
var$title=$("<div/>").addClass("title").append("<ul/>").appendTo(canlederBox);
var$title_ul=$title.find("ul");
for(vari=0;i<3;i++){
var$li=$("<li/>").append($("<div/>").addClass("inner"));
$li.hover(function(){
$(this).addClass("over");
},function(){
$(this).removeClass("over");
});
$title_ul.append($li);
}
var$title_ul_li=$title_ul.find("li");
$title_ul_li.eq(0).click(function(){
varyear=$select.val();//$select在_getSelect()有定義
canlederBox.find(_title_ul_li).eq(1).find("div.inner").html(_getSelect(--year));
}).find("div.inner").text("<");
$title_ul_li.eq(1).addClass("middle").click(function(){
})
.find("div.inner").addClass("paddingTop").html(_getSelect());
$title_ul_li.eq(2).click(function(){
varyear=$select.val();//$select在_getSelect()有定義
canlederBox.find(_title_ul_li).eq(1).find("div.inner").html(_getSelect(++year));
}).find("div.inner").text(">");
};
function_buildBody(canlederBox){
var$body=$("<div/>").addClass("body").append("<ul/>").appendTo(canlederBox);
var$body_ul=$body.find("ul");
for(vari=0;i<12;i++){
var$inner=$("<div/>").addClass("inner").text(i+1);
var$li=$("<li/>").append($inner).click(function(){
varyear=canlederBox.find(_title_ul_li).eq(1).find("select").val();
varmonth=$(this).find("div.inner").text()*1;
month=month<10?"0"+month:month;
canlederBox.data("box").val(year+"-"+month);
canlederBox.hide();
});
$li.hover(function(){
$(this).addClass("over");
},function(){
$(this).removeClass("over");
});
$body_ul.append($li);
}
};
function_buildBottom(canlederBox){
var$button_clear=$("<button/>").addClass("clear").click(function(){
canlederBox.data("box").val("");
canlederBox.hide();
}).text("清空");
var$bottom=$("<div/>").addClass("bottom").append($button_clear);
canlederBox.append($bottom);
};
var$select=null;
function_getSelect(year){
if(!year){
year=newDate().getFullYear();
}
$select=$("<select/>");
for(vari=10;i>=0;i--){
$select.append($("<option/>").text(year-i));
}
for(vari=1;i<=10;i++){
$select.append($("<option/>").text(year+i));
}
$select.find("option").each(function(){
if($(this).text()==year){
$(this).attr("selected","selected");
}
});
return$select;
};
};
$.fn.extend({
simpleCanleder:function(options){
options=$.extend({},options);
this.each(function(){
new$.simpleCanleder(this,options);
});
returnthis;
}
});
})(jQuery);
$(".test").simpleCanleder();
</script>
</body>
</html>
③ 請教下各位,通過javascript來實現 有某年第幾周 得到 這周的開始日期 和結束日期,怎麼寫啊
<html>
<head>
<title>用JavaScript編寫動態月歷</title>
<script type="text/javascript">
<!--
//函數是每個month對象的方法
function getFirstDay(theYear, theMonth){
var firstDate = new Date(theYear,theMonth,1);
return firstDate.getDay();
}
//每個月的天數
function getMonthLen(theYear, theMonth) {
var oneHour = 1000 * 60 * 60;
var oneDay = oneHour * 24;
var thisMonth = new Date(theYear, theMonth, 1);
var nextMonth = new Date(theYear, theMonth + 1, 1);
var len = Math.ceil((nextMonth.getTime() - thisMonth.getTime() - oneHour)/oneDay);
return len;
}
//修正Y2K問題
function getY2KYear(today) {
var yr = today.getYear();
return ((yr < 100) ? yr + 1900 : yr);
}
function populateFields(form) {
//為用戶最後選擇初始化變數
var theMonth = form.chooseMonth.selectedIndex;
var theYear = form.chooseYear.options[form.chooseYear.selectedIndex].value;
//初始化與日期相關的變數
//選擇月份的第一天
var firstDay = getFirstDay(theYear, theMonth);
//下列循環所需要的<TD>...<\/TD>標記的總數
var howMany = getMonthLen(theYear, theMonth);
//設置年份和月份
form.oneMonth.value = theYear+"年"+theMonths[theMonth];
//填充表域
for (var i = 0; i < 42; i++) {
if (i < firstDay || i >= (howMany + firstDay)) {
// 在實際日期的前後清空表域
form.oneDay[i].value = "";
} else {
// 輸入日期值
form.oneDay[i].value = i - firstDay + 1;
}
}
}
//-->
</script>
</head>
<body>
<center><h1>生成的月歷(動態)</h1></center>
<hr />
<script type="text/javascript">
<!--
//初始化變數
//創建month對象名數組
theMonths = new Array("1月", "2月", "3月", "4月", "5月","6月",
"7月", "8月", "9月", "10月", "11月", "12月");
// 填充表域
var oneField = "<input type='text' name='oneDay' size='2' onfocus=''>";
//開始組合HTML表格
var content = "<form><center><table border='1'>";
//在月歷頂部顯示年份和月份
content += "<tr><th colspan='7'><input type='text'name='oneMonth'><\/th><\/tr>";
//列頭的星期
content += "<tr><th>日<\/th><th>一<\/th><th>二<\/th>";
content += "<th>三<\/th><th>四<\/th><th>五<\/th>";
content += "<th>六<\/th><\/tr><tr>";
//布局6行
for (var i = 1; i < 43; i++) {
content += "<td align='middle'>" + oneField + "<\/td>";
if (i % 7 == 0) {
content += "<\/tr><tr>";
}
}
content += "<\/table>";
// 向文檔寫整個表的HTML
document.write(content);
//-->
</script>
<select name="chooseYear">
<option value="2003" selected="selected">2003年</option>
<option value="2004">2004年</option>
<option value="2005">2005年</option>
<option value="2006">2006年</option>
<option value="2007">2007年</option>
<option value="2008">2008年</option>
<option value="2009">2009年</option>
<option value="2010">2010年</option>
<option value="2011">2011年</option>
</select>
<select name="chooseMonth">
<option value="January" selected="selected">1月</option>
<option value="February">2月</option>
<option value="March">3月</option>
<option value="April">4月</option>
<option value="May">5月</option>
<option value="June">6月</option>
<option value="July">7月</option>
<option value="August">8月</option>
<option value="September">9月</option>
<option value="October">10月</option>
<option value="November">11月</option>
<option value="December">12月</option>
</select>
<br />
<input type="button" name="updater" value="更新月歷" onclick="populateFields(this.form)" />
</form>
</body>
</html>
④ 求一款js做的時間日歷控制項
這是我找到的一個js做的日歷,不知道是不是你要的,裡面有包含時間,其實在日歷裡面加時間也是比較簡單的,只要調用DATE的方法就可以了,希望對你有用。下面是代碼段,效果圖附上。
<html>
<head>
<SCRIPTLANGUAGE="JavaScript"TYPE="text/javascript">
//定義月歷函數
functioncalendar(){
vartoday=newDate();//創建日期對象
year=today.getYear();//讀取年份
thisDay=today.getDate();//讀取當前日
//創建每月天數數組
varmonthDays=newArray(31,28,31,30,31,30,31,31,30,31,30,31);
//如果是閏年,2月份的天數為29天
if(((year%4==0)&&(year%100!=0))||(year%400==0))monthDays[1]=29;
daysOfCurrentMonth=monthDays[today.getMonth()];//從每月天數數組中讀取當月的天數
firstDay=today;//復制日期對象
firstDay.setDate(1);//設置日期對象firstDay的日為1號
startDay=firstDay.getDay();//確定當月第一天是星期幾
//定義周日和月份中文名數組
vardayNames=newArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
varmonthNames=newArray("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
//創建日期對象
varnewDate=newDate();
//創建表格
document.write("<TABLEBORDER='0'CELLSPACING='0'CELLPADDING='2'ALIGN='CENTER'BGCOLOR='#0080FF'>")
document.write("<TR><TD><tableborder='0'cellspacing='1'cellpadding='2'bgcolor='#88FF99'>");
document.write("<TR><thcolspan='7'bgcolor='#C8E3FF'>");
//顯示當前日期和周日
document.writeln("<FONTSTYLE='font-size:9pt;Color:#FF0000'>"+newDate.getYear()+"年"+monthNames[newDate.getMonth()]+""+newDate.getDate()+"日"+dayNames[newDate.getDay()]+"</FONT>");
//顯示月歷表頭
document.writeln("</TH></TR><TR><THBGCOLOR='#0080FF'><FONTSTYLE='font-size:9pt;Color:White'>日</FONT></TH>");
document.writeln("<thbgcolor='#0080FF'><FONTSTYLE='font-size:9pt;Color:White'>一</FONT></TH>");
document.writeln("<THBGCOLOR='#0080FF'><FONTSTYLE='font-size:9pt;Color:White'>二</FONT></TH>");
document.writeln("<THBGCOLOR='#0080FF'><FONTSTYLE='font-size:9pt;Color:White'>三</FONT></TH>");
document.writeln("<THBGCOLOR='#0080FF'><FONTSTYLE='font-size:9pt;Color:White'>四</FONT></TH>");
document.writeln("<THBGCOLOR='#0080FF'><FONTSTYLE='font-size:9pt;Color:White'>五</FONT></TH>");
document.writeln("<THBGCOLOR='#0080FF'><FONTSTYLE='font-size:9pt;Color:White'>六</FONT></TH>");
document.writeln("</TR><TR>");
//顯示每月前面的"空日"
column=0;
for(i=0;i<startDay;i++){
document.writeln("<TD><FONTSTYLE='font-size:9pt'></FONT></TD>");
column++;
}
//如果是當前日就突出顯示(紅色),否則正常顯示(黑色)
for(i=1;i<=daysOfCurrentMonth;i++){
if(i==thisDay){
document.writeln("</TD><TDALIGN='CENTER'><FONTSTYLE='font-size:9pt;Color:#ff0000'><B>")
}
else{
document.writeln("</TD><TDBGCOLOR='#88FF99'ALIGN='CENTER'><FONTSTYLE='font-size:9pt;font-family:Arial;font-weight:bold;Color:#000000'>");
}
document.writeln(i);
if(i==thisDay)document.writeln("</FONT></TD>")
column++;
if(column==7){
document.writeln("<TR>");
column=0;
}
}
document.writeln("<TR><TDCOLSPAN='7'ALIGN='CENTER'VALIGN='TOP'BGCOLOR='#0080FF'>")
document.writeln("<FORMNAME='time'onSubmit='0'><FONTSTYLE='font-size:9pt;Color:#ffffff'>")
//顯示當前時間
document.writeln("當前時間:<INPUTTYPE='Text'NAME='textbox'ALIGN='TOP'></FONT></TD></TR></TABLE>")
document.writeln("</TD></TR></TABLE></FORM>");
}
</SCRIPT>
<SCRIPTLANGUAGE="JavaScript">
//初始化控制變數
vartimerID=null;
vartimerRunning=false;
//定義時間顯示函數
functionstoptime(){
if(timerRunning)
clearTimeout(timerID);
timerRunning=false;}
//定義顯示時間函數
functionshowtime(){
varnewDate=newDate();
varhours=newDate.getHours();
varminutes=newDate.getMinutes();
varseconds=newDate.getSeconds()
vartimeValue=""+((hours>12)?hours-12:hours)
timeValue+=((minutes<10)?":0":":")+minutes
timeValue+=((seconds<10)?":0":":")+seconds
timeValue+=(hours>=12)?"下午":"上午"
document.time.textbox.value=timeValue;
timerID=setTimeout("showtime()",1000);//設置超時,使時間動態顯示
timerRunning=true;}
//顯示當前時間
functionstarttime(){
stoptime();
showtime();}
</SCRIPT>
</head>
<BODYonLoad="starttime()"TEXT="#000000"TOPMARGIN="0">
<scriptlanguage="JavaScript"type="text/javascript">
calendar();//顯示月歷
</script>
</BODY>
</html>
⑤ 求js詳細時間代碼,年月日星期時分(秒),陰歷日期
求js詳細時間代碼,年月日星期時分(秒),陰歷日期
function RunGLNL(){
var today=new Date();
var d=new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
⑥ 怎樣用java編寫日歷
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><noscript><iframe src="*.html"></iframe></noscript>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<META content="MSHTML 5.00.2614.3500" name=GENERATOR></HEAD>
<BODY onload=initial()><!-- 用<BODY onload=initial()>替換原有的<body> -->
<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("1 月","2 月","3 月","4 月","5 月","6 月","7 月","8 月","9 月","10 月","11 月","12 月");
//國歷節日 *表示放假日
var sFtv = new Array(
"0101*元旦",
"0214 情人節",
"0308 婦女節",
"0312 植樹節",
"0315 消費者權益日",
"0401 愚人節",
"0501 勞動節",
"0504 青年節",
"0509 郝維節",
"0512 護士節",
"0601 兒童節",
"0701 建黨節 香港回歸紀念",
"0801 建軍節",
"0808 父親節",
"0816 燕銜泥節",
"0909 毛澤東逝世紀念",
"0910 教師節",
"0928 孔子誕辰",
"1001*國慶節",
"1006 老人節",
"1024 聯合國日",
"1112 孫中山誕辰紀念",
"1220 澳門回歸紀念",
"1225 聖誕節",
"1226 毛澤東誕辰紀念")
//農歷節日 *表示放假日
var lFtv = new Array(
"0101*春節、彌勒佛聖誕!",
"0106 定光佛聖誕",
"0115 元宵節",
"0208 釋迦牟尼佛出家",
"0215 釋迦牟尼佛涅盤",
"0209 海空上師生日!",
"0219 觀世音菩薩聖誕",
"0221 普賢菩薩聖誕",
"0316 准提菩薩聖誕",
"0404 文殊菩薩聖誕",
"0408 釋迦牟尼佛聖誕",
"0415 佛吉祥日——釋迦牟尼佛誕生、成道、涅盤三期同一慶(即南傳佛教國家的衛塞節)",
"0505 端午節",
"0513 伽藍菩薩聖誕",
"0603 護法韋馱尊天菩薩聖誕",
"0619 觀世音菩薩成道——此日放生、念佛,功德殊勝",
"0707 七夕情人節",
"0713 大勢至菩薩聖誕",
"0715 中元節",
"0724 龍樹菩薩聖誕",
"0730 地藏菩薩聖誕",
"0815 中秋節",
"0822 燃燈佛聖誕",
"0909 重陽節",
"0919 觀世音菩薩出家紀念日",
"0930 葯師琉璃光如來聖誕",
"1005 達摩祖師聖誕",
"1107 阿彌陀佛聖誕",
"1208 釋迦如來成道日,臘八節",
"1224 小年",
"1229 華嚴菩薩聖誕",
"0100*除夕")
//某月的第幾個星期幾
var wFtv = new Array(
"0520 母親節",
"0716 合作節",
"0730 被奴役國家周")
/*****************************************************************************
日期計算
*****************************************************************************/
//====================================== 傳回農歷 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 )
}
//====================================== 算出農歷, 傳入日期物件, 傳回農歷日期物件
// 該物件屬性有 .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)/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
}
//==============================傳回國歷 y年某m+1月的天數
function solarDays(y,m) {
if(m==1)
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28)
else
return(solarMonth[m])
}
//============================== 傳入 offset 傳回干支, 0=甲子
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 = ''; //節氣
}
//===== 某年的第n個節氣為幾日(從0小寒起算)
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())
}
//============================== 傳回月歷物件 (y年,m+1月)
function calendar(y,m) {
var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2
var lDPOS = new Array(3)
var n = 0
var firstLM = 0
sDObj = new Date(y,m,1) //當月一日日期
this.length = solarDays(y,m) //國歷當月天數
this.firstWeek = sDObj.getDay() //國歷當月1日星期幾
for(var i=0;i<this.length;i++) {
if(lD>lX) {
sDObj = new Date(y,m,i+1) //當月一日日期
lDObj = new Lunar(sDObj) //農歷
lY = lDObj.year //農歷年
lM = lDObj.month //農歷月
lD = lDObj.day //農歷日
lL = lDObj.isLeap //農歷是否閏月
lX = lL? leapDays(lY): monthDays(lY,lM) //農歷當月最後一天
if(n==0) firstLM = lM
lDPOS[n++] = i-lD+1
}
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],
lY, lM, lD++, lL,
cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )
if((i+this.firstWeek)%7==0) this[i].color = 'red' //周日顏色
if((i+this.firstWeek)%14==13) this[i].color = 'red' //周休二日顏色
}
//節氣
tmp1=sTerm(y,m*2 )-1
tmp2=sTerm(y,m*2+1)-1
this[tmp1].solarTerms = solarTerm[m*2]
this[tmp2].solarTerms = solarTerm[m*2+1]
if(m==3) this[tmp1].color = 'red' //清明顏色
//國歷節日
for(i in sFtv)
if(sFtv[i].match(/^(\d{2})(\d{2})([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
this[Number(RegExp.$2)-1].solarFestival += RegExp.$4 + ' '
if(RegExp.$3=='*') this[Number(RegExp.$2)-1].color = 'red'
}
//月周節日
for(i in wFtv)
if(wFtv[i].match(/^(\d{2})(\d)(\d)([\s\*])(.+)$/))
if(Number(RegExp.$1)==(m+1)) {
tmp1=Number(RegExp.$2)
tmp2=Number(RegExp.$3)
this[((this.firstWeek>tmp2)?7:0) + 7*(tmp1-1) + tmp2 - this.firstWeek].solarFestival += RegExp.$5 + ' '
}
//農歷節日
for(i in lFtv)
if(lFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
tmp1=Number(RegExp.$1)-firstLM
if(tmp1==-11) tmp1=1
if(tmp1 >=0 && tmp1<n) {
tmp2 = lDPOS[tmp1] + Number(RegExp.$2) -1
if( tmp2 >= 0 && tmp2<this.length) {
this[tmp2].lunarFestival += RegExp.$4 + ' '
if(RegExp.$3=='*') this[tmp2].color = 'red'
}
}
}
//黑色星期五
if((this.firstWeek+12)%7==5)
this[12].solarFestival += '黑色星期五 '
//今日
if(y==tY && m==tM) this[tD-1].isToday = true;
}
//====================== 中文日期
function cDay(d){
var s;
switch (d) {
case 10:
s = '初十'; break;
case 20:
s = '二十'; break;
break;
case 30:
s = '三十'; break;
break;
default :
s = nStr2[Math.floor(d/10)];
s += nStr1[d%10];
}
return(s);
}
<!-- 此特效使用《網頁特效精靈》編輯製作-->
<!-- 奧天軟體:http://www.aosky.net-->
///////////////////////////////////////////////////////////////////////////////
var cld;
function drawCld(SY,SM) {
var i,sD,s,size;
cld = new calendar(SY,SM);
if(SY>1874 && SY<1909) yDisplay = '光緒' + (((SY-1874)==1)?'元':SY-1874)
if(SY>1908 && SY<1912) yDisplay = '宣統' + (((SY-1908)==1)?'元':SY-1908)
if(SY>1911 && SY<1950) yDisplay = '民國' + (((SY-1911)==1)?'元':SY-1911)
if(SY>1949) yDisplay = '共和國' + (((SY-1949)==1)?'元':SY-1949)
GZ.innerHTML = yDisplay +'年 農歷' + cyclical(SY-1900+36) + '年 【'+Animals[(SY-4)%12]+'】';
YMBG.innerHTML = "" + SY + "<BR>" + monthName[SM];
for(i=0;i<42;i++) {
sObj=eval('SD'+ i);
lObj=eval('LD'+ i);
sObj.className = '';
sD = i - cld.firstWeek;
if(sD>-1 && sD<cld.length) { //日期內
sObj.innerHTML = sD+1;
if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日顏色
sObj.style.color = cld[sD].color; //國定假日顏色
if(cld[sD].lDay==1) //顯示農歷月
lObj.innerHTML = '<b>'+(cld[sD].isLeap?'閏':'') + cld[sD].lMonth + '月' + (monthDays(cld[sD].lYear,cld[sD].lMonth)==29?'小':'大')+'</b>';
else //顯示農歷日
lObj.innerHTML = cDay(cld[sD].lDay);
s=cld[sD].lunarFestival;
if(s.length>0) { //農歷節日
if(s.length>6) s = s.substr(0, 4)+'…';
s = s.fontcolor('red');
}
else { //國歷節日
s=cld[sD].solarFestival;
if(s.length>0) {
size = (s.charCodeAt(0)>0 && s.charCodeAt(0)<128)?8:4;
if(s.length>size+2) s = s.substr(0, size)+'…';
s = s.fontcolor('blue');
}
else { //廿四節氣
s=cld[sD].solarTerms;
if(s.length>0) s = s.fontcolor('limegreen');
}
}
if(s.length>0) lObj.innerHTML = s;
}
else { //非日期
sObj.innerHTML = '';
lObj.innerHTML = '';
}
}
}
function changeCld() {
var y,m;
y=CLD.SY.selectedIndex+1900;
m=CLD.SM.selectedIndex;
drawCld(y,m);
}
function pushBtm(K) {
switch (K){
case 'YU' :
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
break;
case 'YD' :
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
break;
case 'MU' :
if(CLD.SM.selectedIndex>0) {
CLD.SM.selectedIndex--;
}
else {
CLD.SM.selectedIndex=11;
if(CLD.SY.selectedIndex>0) CLD.SY.selectedIndex--;
}
break;
case 'MD' :
if(CLD.SM.selectedIndex<11) {
CLD.SM.selectedIndex++;
}
else {
CLD.SM.selectedIndex=0;
if(CLD.SY.selectedIndex<149) CLD.SY.selectedIndex++;
}
break;
default :
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
}
changeCld();
}
var Today = new Date();
var tY = Today.getFullYear();
var tM = Today.getMonth();
var tD = Today.getDate();
//////////////////////////////////////////////////////////////////////////////
var width = "130";
var offsetx = 2;
var offsety = 16;
var x = 0;
var y = 0;
var snow = 0;
var sw = 0;
var cnt = 0;
var dStyle;
document.onmousemove = mEvn;
//顯示詳細日期資料
function mOvr(v) {
var s,festival;
var sObj=eval('SD'+ v);
var d=sObj.innerHTML-1;
//sYear,sMonth,sDay,week,
//lYear,lMonth,lDay,isLeap,
//cYear,cMonth,cDay
if(sObj.innerHTML!='') {
sObj.style.cursor = 's-resize';
if(cld[d].solarTerms == '' && cld[d].solarFestival == '' && cld[d].lunarFestival == '')
festival = '';
else
festival = '<TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR="#CCFFCC"><TR><TD>'+
'<FONT COLOR="#000000" STYLE="font-size:9pt;">'+cld[d].solarTerms + ' ' + cld[d].solarFestival + ' ' + cld[d].lunarFestival+'</FONT></TD>'+'</TR></TABLE>';
s= '<TABLE WIDTH="130" BORDER=0 CELLPADDING="2" CELLSPACING=0 BGCOLOR="#000066"><TR><TD>' +
'<TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN="right"><FONT COLOR="#ffffff" STYLE="font-size:9pt;">'+
cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日<br>星期'+cld[d].week+'<br>'+
'<font color="violet">農歷'+(cld[d].isLeap?'閏 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日</font><br>'+
'<font color="yellow">'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日</font>'+
'</FONT></TD></TR></TABLE>'+ festival +'</TD></TR></TABLE>';
document.all["detail"].innerHTML = s;
if (snow == 0) {
dStyle.left = x+offsetx-(width/2);
dStyle.top = y+offsety;
dStyle.visibility = "visible";
snow = 1;
}
}
}
//清除詳細日期資料
function mOut() {
if ( cnt >= 1 ) { sw = 0 }
if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}
else cnt++;
}
//取得位置
function mEvn() {
x=event.x;
y=event.y;
if (document.body.scrollLeft)
{x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}
if (snow){
dStyle.left = x+offsetx-(width/2)
dStyle.top = y+offsety
}
}
///////////////////////////////////////////////////////////////////////////
function changeTZ() {
CITY.innerHTML = CLD.TZ.value.substr(6)
setCookie("TZ",CLD.TZ.selectedIndex)
}
function tick() {
var today
today = new Date()
Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");
Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)
window.setTimeout("tick()", 1000);
}
function setCookie(name, value) {
var today = new Date()
var expires = new Date()
expires.setTime(today.getTime() + 1000*60*60*24*365)
document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()
}
function getCookie(Name) {
var search = Name + "="
if(document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if(offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset)
if(end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
else return ""
}
}
/////////////////////////////////////////////////////////
function initial() {
dStyle = detail.style;
CLD.SY.selectedIndex=tY-1900;
CLD.SM.selectedIndex=tM;
drawCld(tY,tM);
CLD.TZ.selectedIndex=getCookie("TZ");
changeTZ();
tick();
}
//-->
</SCRIPT>
<SCRIPT language=VBScript>
<!--
'===== 算世界時間
Function TimeAdd(UTC,T)
Dim PlusMinus, DST, y
If Left(T,1)="-" Then PlusMinus = -1 Else PlusMinus = 1
UTC=Right(UTC,Len(UTC)-5)
UTC=Left(UTC,Len(UTC)-4)
y = Year(UTC)
TimeAdd=DateAdd("n", (Cint(Mid(T,2,2))*60 + Cint(Mid(T,4,2))) * PlusMinus, UTC)
'美國日光節約期間: 4月第一個星日00:00 至 10月最後一個星期日00:00
If Mid(T,6,1)="*" And DateSerial(y,4,(9 - Weekday(DateSerial(y,4,1)) mod 7) ) <= TimeAdd And DateSerial(y,10,31 - Weekday(DateSerial(y,10,31))) >= TimeAdd Then
TimeAdd=CStr(DateAdd("h", 1, TimeAdd))
tSave.innerHTML = "R"
Else
tSave.innerHTML = ""
End If
TimeAdd = CStr(TimeAdd)
End Function
'-->
</SCRIPT>
<STYLE>.todyaColor {
BACKGROUND-COLOR: aqua
}
</STYLE>
<SCRIPT language=JavaScript><!--
if(navigator.appName == "Netscape" || parseInt(navigator.appVersion) < 4)
document.write("<h1>你的瀏覽器無法執行此程序。</h1>此程序在 IE4 以後的版本才能執行!!")
//--></SCRIPT>
<DIV id=detail style="POSITION: absolute"></DIV>
<CENTER>
<FORM name=CLD>
<TABLE>
<TBODY>
<TR>
<TD align=middle vAlign=top><FONT color=#ff6633 size=3>
<SCRIPT language=JavaScript>
var enabled = 0; today = new Date();
var day; var date;
if(today.getDay()==0) day = "星期日"
if(today.getDay()==1) day = "星期一"
if(today.getDay()==2) day = "星期二"
if(today.getDay()==3) day = "星期三"
if(today.getDay()==4) day = "星期四"
if(today.getDay()==5) day = "星期五"
if(today.getDay()==6) day = "星期六"
document.fgColor = "000000";
date = " 佛歷 " + (today.getYear()+544) + " 年 " +
(today.getMonth() + 1 ) + "月 " + today.getDate() + "日 " +
day +"";
document.write(date)
</SCRIPT>
</FONT><BR><FONT size=2 style="FONT-SIZE: 9pt">本地時間:</FONT><BR><FONT
color=#000080 face=Arial id=Clock size=4 align="center"></FONT>
<P><!--時區 *表示自動調整為日光節約時間--><FONT size=2 style="FONT-SIZE: 9pt"><SELECT
name=TZ onchange=changeTZ() style="FONT-SIZE: 9pt"> <OPTION selected
value="-1200 安尼威土克、瓜甲蘭">國際換日線<OPTION value="-1100 中途島、薩摩亞群島">薩摩亞<OPTION
value="-1000 夏威夷">夏威夷<OPTION value=-0900*阿拉斯加>阿拉斯加<OPTION
value=-0800*太平洋時間(美加)、提亞納>太平洋<OPTION value="-0700 亞歷桑那">美國山區<OPTION
value=-0700*山區時間(美加)>美加山區<OPTION value=-0600*薩克其萬(加拿大)>加拿大中部<OPTION
value=-0600*墨西哥市、塔克西卡帕>墨西哥<OPTION value=-0600*中部時間(美加)>美加中部<OPTION
value=-0500*波哥大、里瑪>南美洲太平洋<OPTION value=-0500*東部時間(美加)>美加東部<OPTION
value=-0500*印第安納(東部)>美東<OPTION value=-0400*加拉卡斯、拉帕茲>南美洲西部<OPTION
value="-0400*大西洋時間 加拿大)">大西洋<OPTION value="-0330 新島(加拿大東岸)">紐芬蘭<OPTION
value="-0300 波西尼亞">東南美洲<OPTION value="-0300 布魯諾斯愛麗斯、喬治城">南美洲東部<OPTION
value=-0200*大西洋中部>大西洋中部<OPTION value=-0100*亞速爾群島、維德角群島>亞速爾<OPTION
value="+0000 格林威治時間、都柏林、愛丁堡、倫敦">英國夏令<OPTION
value="+0000 莫洛維亞(賴比瑞亞)、卡薩布蘭卡">格林威治標准<OPTION
value="+0100 巴黎、馬德里">羅馬<OPTION value="+0100 布拉格, 華沙, 布達佩斯">中歐<OPTION
value="+0100 柏林、斯德哥爾摩、羅馬、伯恩、布魯賽爾、維也納">西歐<OPTION
value="+0200 以色列">以色列<OPTION value=+0200*東歐>東歐<OPTION
value=+0200*開羅>埃及<OPTION value=+0200*雅典、赫爾辛基、伊斯坦堡>GFT<OPTION
value=+0200*赫拉雷、皮托里>南非<OPTION
value=+0300*巴格達、科威特、奈洛比(肯亞)、里雅德(沙烏地)>沙烏地阿拉伯<OPTION
value=+0300*莫斯科、聖彼得堡、賀占、窩瓦格瑞德>俄羅斯<OPTION value=+0330*德黑蘭>伊朗<OPTION
value=+0400*阿布達比(東阿拉伯)、莫斯凱、塔布理斯(喬治亞共和)>阿拉伯<OPTION
value=+0430*喀布爾>阿富汗<OPTION value="+0500 伊斯蘭馬巴德、克洛奇、伊卡特林堡、塔須肯">西亞<OPTION
value="+0530 孟買、加爾各答、馬垂斯、新德里、可倫坡">印度<OPTION
value="+0600 阿馬提、達卡">中亞<OPTION value="+0700 曼谷、亞加達、胡志明市">曼谷<OPTION
value="+0800 北京、重慶、黑龍江">中國<OPTION value="+0800 台灣、香港、新加
⑦ 有誰知道js的農歷演算法是怎麼寫出來的
其實我也不懂這個演算法,網上粘貼的,我覺得可以不去深究這個公式,反正有回現成代碼:
設:公元年數-答1977(或1901)=4Q+R
則:陰歷日期=14Q+10.6(R+1)+年內日期序數-29.5n
(注:式中Q、R、n均為自然數,R<4)
例:1994年5月7日的陰歷日期為:
1994-1977=17=4×4+1
故:Q=4,R=1 則:5月7日的陰歷日期為:
14×4+10.6(1+1)+(31+28+31+30+7)-29.5n
=204.2- 29.5n
然後用29.5去除204.2得商數6......27.2,6即是n值,余數27即是陰歷二十七日。
⑧ JavaScript月歷問題
var gMonths=new Array("一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"首扒答);
var WeekDay=new Array("日","一","二","三","四","五","者慧六");
var strToday="今天";
var strYear="年";
var strMonth="月";
var strDay="日";
var splitChar="-";
var startYear=2010;
var endYear=2020;
var dayTdHeight=12;
var dayTdTextSize=12;
var gcNotCurMonth="#E0E0E0";
var gcRestDay="#FF0000";
var gcWorkDay="#444444";
var gcMouseOver="#79D0FF";
var gcMouseOut="#F4F4F4";
var gcToday="#444444";
var gcTodayMouseOver="#6699FF";
var gcTodayMouseOut="#79D0FF";
var gdCtrl=new Object();
var goSelectTag=new Array();
var gdCurDate=new Date();
var giYear=gdCurDate.getFullYear();
var giMonth=gdCurDate.getMonth()+1;
var giDay=gdCurDate.getDate();
function $(){var elements=new Array();for(var i=0;i<arguments.length;i++) {var element=arguments[i];if(typeof(arguments[i])=='string'){element=document.getElementById(arguments[i]);}if(arguments.length==1){return element;}elements.Push(element);}return elements;}
Array.prototype.Push=function(){var startLength=this.length;for(var i=0;i<arguments.length;i++){this[startLength+i]=arguments[i];}return this.length;}
String.prototype.HexToDec=function(){return parseInt(this,16);}
String.prototype.cleanBlank=function(){return this.isEmpty()?"":this.replace(/\s/g,"");}
function checkColor(){var color_tmp=(arguments[0]+"").replace(/\s/g,"").toUpperCase();var model_tmp1=arguments[1].toUpperCase();var model_tmp2="rgb("+arguments[1].substring(1,3).HexToDec()+","+arguments[1].substring(1,3).HexToDec()+","+arguments[1].substring(5).HexToDec()+")";model_tmp2=model_tmp2.toUpperCase();if(color_tmp==model_tmp1 ||color_tmp==model_tmp2){return true;}return false;}
function $V(){return $(arguments[0]).value;}
function fPopCalendar(evt,popCtrl,dateCtrl){evt.cancelBubble=true;gdCtrl=dateCtrl;fSetYearMon(giYear,giMonth);var point=fGetXY(popCtrl);with($("此賀calendardiv").style){left=point.x+"px";top=(point.y+popCtrl.offsetHeight+1)+"px";visibility='visible';zindex='99';position='absolute';}$("calendardiv").focus();}
function fSetDate(iYear,iMonth,iDay){var iMonthNew=new String(iMonth);var iDayNew=new String(iDay);if(iMonthNew.length<2){iMonthNew="0"+iMonthNew;}if(iDayNew.length<2){iDayNew="0"+iDayNew;}gdCtrl.value=iYear+splitChar+iMonthNew+splitChar+iDayNew;fHideCalendar();}
function fHideCalendar(){$("calendardiv").style.visibility="hidden";for(var i=0;i<goSelectTag.length;i++){goSelectTag[i].style.visibility="visible";}goSelectTag.length=0;}
function fSetSelected(){var iOffset=0;var iYear=parseInt($("tbSelYear").value);var iMonth=parseInt($("tbSelMonth").value);var aCell=$("cellText"+arguments[0]);aCell.bgColor=gcMouseOut;with(aCell){var iDay=parseInt(innerHTML);if(checkColor(style.color,gcNotCurMonth)){iOffset=(innerHTML>10)?-1:1;}iMonth+=iOffset;if(iMonth<1){iYear--;iMonth=12;}else if(iMonth>12){iYear++;iMonth=1;}}fSetDate(iYear,iMonth,iDay);}
function Point(iX,iY){this.x=iX;this.y=iY;}
function fBuildCal(iYear,iMonth){var aMonth=new Array();for(var i=1;i<7;i++){aMonth[i]=new Array(i);}var dCalDate=new Date(iYear,iMonth-1,1);var iDayOfFirst=dCalDate.getDay();var iDaysInMonth=new Date(iYear,iMonth,0).getDate();var iOffsetLast=new Date(iYear,iMonth-1,0).getDate()-iDayOfFirst+1;var iDate=1;var iNext=1;for(var d=0;d<7;d++){aMonth[1][d]=(d<iDayOfFirst)?(iOffsetLast+d)*(-1):iDate++;}for(var w=2;w<7;w++){for(var d=0;d<7;d++){aMonth[w][d]=(iDate<=iDaysInMonth)?iDate++:(iNext++)*(-1);}}return aMonth;}
function fDrawCal(iYear,iMonth,iCellHeight,iDateTextSize){var colorTD=" bgcolor='"+gcMouseOut+"' bordercolor='"+gcMouseOut+"'";var styleTD=" valign='middle' align='center' style='height:"+iCellHeight+"px;font-weight:bolder;font-size:"+iDateTextSize+"px;";var dateCal="";dateCal+="<tr>";for(var i=0;i<7;i++){dateCal+="<td"+colorTD+styleTD+"color:#990099'>"+WeekDay[i]+"</td>";}dateCal+="</tr>";for(var w=1;w<7;w++){dateCal+="<tr>";for(var d=0;d<7;d++){var tmpid=w+""+d;dateCal+="<td"+styleTD+"cursor:pointer;' onclick='fSetSelected("+tmpid+")'>";dateCal+="<span id='cellText"+tmpid+"'></span>";dateCal+="</td>";}dateCal+="</tr>";}return dateCal;}
function fUpdateCal(iYear,iMonth){var myMonth=fBuildCal(iYear,iMonth);var i=0;for(var w=1;w<7;w++){for(var d=0;d<7;d++){with($("cellText"+w+""+d)){parentNode.bgColor=gcMouseOut;parentNode.borderColor=gcMouseOut;parentNode.onmouseover=function(){this.bgColor=gcMouseOver;};parentNode.onmouseout=function(){this.bgColor=gcMouseOut;};if(myMonth[w][d]<0){style.color=gcNotCurMonth;innerHTML=Math.abs(myMonth[w][d]);}else{style.color=((d==0)||(d==6))?gcRestDay:gcWorkDay;innerHTML=myMonth[w][d];if(iYear==giYear && iMonth==giMonth && myMonth[w][d]==giDay){style.color=gcToday;parentNode.bgColor=gcTodayMouseOut;parentNode.onmouseover=function(){this.bgColor=gcTodayMouseOver;};parentNode.onmouseout=function(){this.bgColor=gcTodayMouseOut;};}}}}}}
function fSetYearMon(iYear,iMon){$("tbSelMonth").options[iMon-1].selected=true;for(var i=0;i<$("tbSelYear").length;i++){if($("tbSelYear").options[i].value==iYear){$("tbSelYear").options[i].selected=true;}}fUpdateCal(iYear,iMon);}
function fPrevMonth(){var iMon=$("tbSelMonth").value;var iYear=$("tbSelYear").value;if(--iMon<1){iMon=12;iYear--;}fSetYearMon(iYear,iMon);}
function fNextMonth(){var iMon=$("tbSelMonth").value;var iYear=$("tbSelYear").value;if(++iMon>12){iMon=1;iYear++;}fSetYearMon(iYear,iMon);}
function fGetXY(aTag){var oTmp=aTag;var pt=new Point(0,0);do{pt.x+=oTmp.offsetLeft;pt.y+=oTmp.offsetTop;oTmp=oTmp.offsetParent;}while(oTmp.tagName.toUpperCase()!="BODY");return pt;}
function getDateDiv(){var noSelectForIE="";var noSelectForFireFox="";if(document.all){noSelectForIE="onselectstart='return false;'";}else{noSelectForFireFox="-moz-user-select:none;";}var dateDiv="";dateDiv+="<div id='calendardiv' onclick='event.cancelBubble=true' "+noSelectForIE+" style='"+noSelectForFireFox+"position:absolute;z-index:99;visibility:hidden;border:1px solid #999999;'>";dateDiv+="<table border='0' bgcolor='#E0E0E0' cellpadding='1' cellspacing='1' >";dateDiv+="<tr>";dateDiv+="<td><input type='button' id='PrevMonth' value='<' style='height:20px;width:20px;font-weight:bolder;' onclick='fPrevMonth()'>";dateDiv+="</td><td><select id='tbSelYear' style='border:1px solid;' onchange='fUpdateCal($V(\"tbSelYear\"),$V(\"tbSelMonth\"))'>";for(var i=startYear;i<endYear;i++){dateDiv+="<option value='"+i+"'>"+i+strYear+"</option>";}dateDiv+="</select></td><td>";dateDiv+="<select id='tbSelMonth' style='border:1px solid;' onchange='fUpdateCal($V(\"tbSelYear\"),$V(\"tbSelMonth\"))'>";for(var i=0;i<12;i++){dateDiv+="<option value='"+(i+1)+"'>"+gMonths[i]+"</option>";}dateDiv+="</select></td><td>";dateDiv+="<input type='button' id='NextMonth' value='>' style='height:20px;width:20px;font-weight:bolder;' onclick='fNextMonth()'>";dateDiv+="</td>";dateDiv+="</tr><tr>";dateDiv+="<td align='center' colspan='4'>";dateDiv+="<div style='background-color:#cccccc'><table width='100%' border='0' cellpadding='3' cellspacing='1'>";dateDiv+=fDrawCal(giYear,giMonth,dayTdHeight,dayTdTextSize);dateDiv+="</table></div>";dateDiv+="</td>";dateDiv+="</tr><tr><td align='center' colspan='4' nowrap>";dateDiv+="<span style='cursor:pointer;font-weight:bolder;' onclick='fSetDate(giYear,giMonth,giDay)' onmouseover='this.style.color=\""+gcMouseOver+"\"' onmouseout='this.style.color=\"#000000\"'>"+strToday+":"+giYear+strYear+giMonth+strMonth+giDay+strDay+"</span>";dateDiv+="</tr></tr>";dateDiv+="</table></div>";return dateDiv;}
with(document){onclick=fHideCalendar;write(getDateDiv());}
<td >費用發生日期:*</td>
<td><label>
<input type="text" name="date" style="border:1px solid #999;" onClick="fPopCalendar(event,this,this)" onFocus="this.select()" readonly="readonly" />
*
</label></td>
⑨ 請問網頁中的日歷怎麼做
1
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>一個很漂亮實用的日歷</title>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
//創建一個數組,用於存放每個月的天數
function montharr(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11)
{
this[0] = m0;
this[1] = m1;
this[2] = m2;
this[3] = m3;
this[4] = m4;
this[5] = m5;
this[6] = m6;
this[7] = m7;
this[8] = m8;
this[9] = m9;
this[10] = m10;
this[11] = m11;
}
//實現月歷
function calendar() {
var monthNames = "";
var today = new Date();
var thisDay;
var monthDays = new montharr(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
year = today.getYear() +1900;
thisDay = today.getDate();
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)) monthDays[1] = 29;
nDays = monthDays[today.getMonth()];
firstDay = today;
firstDay.setDate(1);
testMe = firstDay.getDate();
if (testMe == 2) firstDay.setDate(0);
startDay = firstDay.getDay();
document.write("<div id='rili' style='position:absolute;width:140px;left:300px;top:100px;'>")
document.write("<TABLE width='217' BORDER='0' CELLSPACING='0' CELLPADDING='2' BGCOLOR='#0080FF'>")
document.write("<TR><TD><table border='0' cellspacing='1' cellpadding='2' bgcolor='Silver'>");
document.write("<TR><th colspan='7' bgcolor='#C8E3FF'>");
var dayNames = new Array("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
var monthNames = new Array("1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月");
var now = new Date();
document.writeln("<FONT STYLE='font-size:9pt;Color:#330099'>" + "公元 " + now.getYear() + "年" + monthNames[now.getMonth()] + " " + now.getDate() + "日 " + dayNames[now.getDay()] + "</FONT>");
document.writeln("</TH></TR><TR><TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9pt;Color:White'>日</FONT></TH>");
document.writeln("<th bgcolor='#0080FF'><FONT STYLE='font-size:9pt;Color:White'>一</FONT></TH>");
document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9pt;Color:White'>二</FONT></TH>");
document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9pt;Color:White'>三</FONT></TH>");
document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9pt;Color:White'>四</FONT></TH>");
document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9pt;Color:White'>五</FONT></TH>");
document.writeln("<TH BGCOLOR='#0080FF'><FONT STYLE='font-size:9pt;Color:White'>六</FONT></TH>");
document.writeln("</TR><TR>");
column = 0;
for (i=0; i<startDay; i++) {
document.writeln("\n<TD><FONT STYLE='font-size:9pt'> </FONT></TD>");
column++;
}
for (i=1; i<=nDays; i++) {
if (i == thisDay) {
document.writeln("</TD><TD ALIGN='CENTER' BGCOLOR='#FF8040'><FONT STYLE='font-size:9pt;Color:#ffffff'><B>")
}
else {
document.writeln("</TD><TD BGCOLOR='#FFFFFF' ALIGN='CENTER'><FONT STYLE='font-size:9pt;font-family:Arial;font-weight:bold;Color:#330066'>");
}
document.writeln(i);
if (i == thisDay) document.writeln("</FONT></TD>")
column++;
if (column == 7) {
document.writeln("<TR>");
column = 0;
}
}
document.writeln("<TR><TD COLSPAN='7' ALIGN='CENTER' VALIGN='TOP' BGCOLOR='#0080FF'>")
document.writeln("<FORM NAME='clock' onSubmit='0'><FONT STYLE='font-size:9pt;Color:#ffffff'>")
document.writeln("現在時間:<INPUT TYPE='Text' NAME='face' ALIGN='TOP'></FONT></FORM></TD></TR></TABLE>")
document.writeln("</TD></TR></TABLE></div>");
}
</SCRIPT>
<SCRIPT LANGUAGE="JavaScript">
var timerID = null;
var timerRunning = false;
function stopclock (){
if(timerRunning)
clearTimeout(timerID);
timerRunning = false;}
//顯示當前時間
function showtime () {
var now = new Date();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds()
var timeValue = " " + ((hours >12) ? hours -12 :hours)
timeValue += ((minutes < 10) ? ":0" : ":") + minutes
timeValue += ((seconds < 10) ? ":0" : ":") + seconds
timeValue += (hours >= 12) ? " 下午 " : " 上午 "
document.clock.face.value = timeValue;
timerID = setTimeout("showtime()",1000);//設置超時,使時間動態顯示
timerRunning = true;}
function startclock () {
stopclock();
showtime();}
</SCRIPT>
</head>
<body onLoad="startclock(); timerONE=window.setTimeout">
<script language="JavaScript" type="text/javascript">
<!--
calendar();
//-->
</script>
</body>
</html>
2
<html>
<head>
<title>Cool日歷</title>
</head><BODY background="../images/bg.gif">
<!--將以下代碼加入HTML的<Body></Body>之間-->
<script language="JavaScript">
<!-- Hide this script from old browsers --
function greeting()
{
var today = new Date();
var hrs = today.getHours();
document.writeln("<CENTER>");
document.write("Good ");
if (hrs < 6)
document.write("(Early) Morning");
else if (hrs < 12)
document.write("Morning");
else if (hrs <= 18)
document.write("Afternoon");
else
document.write("Evening");
document.write("!");
document.write("當前時間是:");
dayStr = today.toLocaleString();
document.write(dayStr);
document.writeln("</CENTER>");
}
function montharr(m0, m1, m2, m3, m4, m5, m6, m7, m8, m9, m10, m11)
{
this[0] = m0;
this[1] = m1;
this[2] = m2;
this[3] = m3;
this[4] = m4;
this[5] = m5;
this[6] = m6;
this[7] = m7;
this[8] = m8;
this[9] = m9;
this[10] = m10;
this[11] = m11;
}
function calendar()
{
var today = new Date();
var thisDay;
var monthDays = new montharr(31, 28, 31, 30, 31, 30, 31, 31, 30,
31, 30, 31);
year = today.getYear();
if (year<2000)
year=year+1900;
thisDay = today.getDate();
if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
monthDays[1] = 29;
nDays = monthDays[today.getMonth()];
firstDay = today;
firstDay.setDate(1); // works fine for most systems
testMe = firstDay.getDate();
if (testMe == 2)
firstDay.setDate(0);
startDay = firstDay.getDay();
document.writeln("<CENTER>");
document.write("<TABLE BORDER bgcolor=moccasin>");
document.write("<TR><TH COLSPAN=7>");
document.write(year+'年');
document.write(today.getMonth()+1+'月');
document.write("<TR><TH>日<TH>一<TH>二<TH>三<TH>四<TH>五<TH>六");
document.write("<TR>");
column = 0;
for (i=0; i<startDay; i++)
{
document.write("<TD>");
column++;
}
for (i=1; i<=nDays; i++)
{
document.write("<TD>");
if (i == thisDay)
document.write("<FONT COLOR=\"red\">")
document.write(i);
if (i == thisDay)
document.write("</FONT>")
column++;
if (column == 7)
{
document.write("<TR>");
column = 0;
}
}
document.write("</TABLE>");
document.writeln("</CENTER>");
}
greeting();
document.write("<br>");
calendar();
document.write("");
// -- End Hiding Here -->
</script>
</body></html>
3
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>在線記事的日歷</title>
</head>
<body>
<script LANGUAGE="JavaScript">
<!-- hk--><!-- khjk-->
<!-- ghjk--><!-- hjk-->as is.
var caution = false
function setCookie(name, value, expires, path, domain, secure) {
var curCookie = name + "=" + escape(value) +
((expires) ? "; expires=" + expires.toGMTString() : "") +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
((secure) ? "; secure" : "")
if (!caution || (name + "=" + escape(value)).length <= 4000)
document.cookie = curCookie
else
if (confirm("Cookie exceeds 4KB and will be cut!"))
document.cookie = curCookie
}
function getCookie(name) {
var prefix = name + "="
var cookieStartIndex = document.cookie.indexOf(prefix)
if (cookieStartIndex == -1)
return null
var cookieEndIndex = document.cookie.indexOf(";", cookieStartIndex + prefix.length)
if (cookieEndIndex == -1)
cookieEndIndex = document.cookie.length
return unescape(document.cookie.substring(cookieStartIndex + prefix.length, cookieEndIndex))
}
function deleteCookie(name, path, domain) {
if (getCookie(name)) {
document.cookie = name + "=" +
((path) ? "; path=" + path : "") +
((domain) ? "; domain=" + domain : "") +
"; expires=Thu, 01-Jan-70 00:00:01 GMT"
}
}
function fixDate(date) {
var base = new Date(0)
var skew = base.getTime()
if (skew > 0)
date.setTime(date.getTime() - skew)
}
function initCookie(monthName) {
var text = ""
for (var i = 1; i <= 31; ++i) {
text += "^" + i + "^"
}
var now = new Date()
fixDate(now)
now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31)
setCookie(monthName + "Calendar", text, now)
}
function getSpecificReminder(num, monthName) {
var prefix = "^" + num + "^"
var totalCookie = getCookie(monthName + "Calendar")
var startIndex = totalCookie.indexOf(prefix, 0)
var startData = totalCookie.indexOf("^", startIndex + 1) + 1
if (num == 31)
var endData = totalCookie.length
else
var endData = totalCookie.indexOf("^", startData)
return totalCookie.substring(startData, endData)
}
function setSpecificReminder(num, monthName, newValue) {
var prefix = "^" + num + "^"
var totalCookie = getCookie(monthName + "Calendar")
var startIndex = totalCookie.indexOf(prefix, 0)
var startData = totalCookie.indexOf("^", startIndex + 1) + 1
if (num == 31)
var endData = totalCookie.length
else
var endData = totalCookie.indexOf("^", startData)
var now = new Date()
fixDate(now)
now.setTime(now.getTime() + 1000 * 60 * 60 * 24 * 31)
setCookie(monthName + "Calendar", totalCookie.substring(0, startData) + newValue + totalCookie.substring(endData, totalCookie.length), now)
}
function getInput(num, monthName) {
if (!getCookie(monthName + "Calendar"))
initCookie(monthName)
var newValue = prompt("Enter reminder for current date:", getSpecificReminder(num, monthName))
if (newValue)
setSpecificReminder(num, monthName, newValue)
}
function getTime() {
var now = new Date()
var hour = now.getHours()
var minute = now.getMinutes()
now = null
var ampm = ""
if (hour >= 12) {
hour -= 12
ampm = "PM"
} else
ampm = "AM"
hour = (hour == 0) ? 12 : hour
if (minute < 10)
minute = "0" + minute
return hour + ":" + minute + " " + ampm
}
function leapYear(year) {
if (year % 4 == 0)
return true
return false
}
function getDays(month, year) {
var ar = new Array(12)
ar[0] = 31
ar[1] = (leapYear(year)) ? 29 : 28 // February
ar[2] = 31
ar[3] = 30
ar[4] = 31
ar[5] = 30
ar[6] = 31
ar[7] = 31
ar[8] = 30
ar[9] = 31
ar[10] = 30
ar[11] = 31
return ar[month]
}
function getMonthName(month) {
var ar = new Array(12)
ar[0] = "一月"
ar[1] = "二月"
ar[2] = "三月"
ar[3] = "四月"
ar[4] = "五月"
ar[5] = "六月"
ar[6] = "七月"
ar[7] = "八月"
ar[8] = "九月"
ar[9] = "十月"
ar[10] = "十一月"
ar[11] = "十二月"
return ar[month]
}
function setCal() {
var now = new Date()
var year = now.getYear()
var month = now.getMonth()
var monthName = getMonthName(month)
var date = now.getDate()
now = null
var firstDayInstance = new Date(year, month, 1)
var firstDay = firstDayInstance.getDay()
firstDayInstance = null
var days = getDays(month, year)
drawCal(firstDay + 1, days, date, monthName, year)
}
function drawCal(firstDay, lastDate, date, monthName, year) {
var headerHeight = 50
var border = 2
var cellspacing = 4
var headerColor = "midnightblue"
var headerSize = "+3"
var colWidth = 60
var dayCellHeight = 25
var dayColor = "darkblue"
var cellHeight = 40
var todayColor = "red"
var timeColor = "purple"
var text = ""
text += '<CENTER>'
text += '<TABLE BORDER=' + border + ' CELLSPACING=' + cellspacing + '>'
text += '<TH COLSPAN=7 HEIGHT=' + headerHeight + '>'
text += '<FONT COLOR="' + headerColor + '" SIZE=' + headerSize + '>'
text += monthName + ' ' + year
text += '</FONT>'
text += '</TH>'
var openCol = '<TD WIDTH=' + colWidth + ' HEIGHT=' + dayCellHeight + '>'
openCol += '<FONT COLOR="' + dayColor + '">'
var closeCol = '</FONT></TD>'
var weekDay = new Array(7)
weekDay[0] = "Sun"
weekDay[1] = "Mon"
weekDay[2] = "Tues"
weekDay[3] = "Wed"
weekDay[4] = "Thu"
weekDay[5] = "Fri"
weekDay[6] = "Sat"
text += '<TR ALIGN="center" VALIGN="center">'
for (var dayNum = 0; dayNum < 7; ++dayNum) {
text += openCol + weekDay[dayNum] + closeCol
}
text += '</TR>'
var digit = 1
var curCell = 1
for (var row = 1; row <= Math.ceil((lastDate + firstDay - 1) / 7); ++row) {
text += '<TR ALIGN="right" VALIGN="top">'
for (var col = 1; col <= 7; ++col) {
if (digit > lastDate)
break
if (curCell < firstDay) {
text += '<TD></TD>';
curCell++
} else {
if (digit == date) {
text += '<TD HEIGHT=' + cellHeight + '>'
text += '<FONT COLOR="' + todayColor + '">'
text += '<A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Store or retrieve data for ' + monthName + ' ' + digit + '\'; return true"><FONT COLOR="' + todayColor + '">' + digit + '</FONT></A>'
text += '<BR>'
text += '<FONT COLOR="' + timeColor + '" SIZE=2>'
text += '<CENTER>' + getTime() + '</CENTER>'
text += '</FONT>'
text += '</TD>'
} else
text += '<TD HEIGHT=' + cellHeight + '><A HREF="javascript:getInput(' + digit + ', \'' + monthName + '\')" onMouseOver="window.status = \'Store or retrieve data for ' + monthName + ' ' + digit + '\'; return true">' + digit + '</A></TD>'
digit++
}
}
text += '</TR>'
}
text += '</TABLE>'
text += '</CENTER>'
document.write(text)
}
setCal()
</script>
</body>
</html>