超牛js版萬年曆源碼,js製作萬年曆

本文目錄一覽:

萬年曆查詢程序. C語言代碼

除了天數差計算,基本上是完成了你所提出的功能(天數差計算其實已經提供了年內序數計算方方法,可以在此基礎上完善即可)。包含星期計算、公曆轉農曆、農曆轉公曆、節氣查詢。數據與演算法均為原創,絕非網上複製而來。附件中有源代碼,同時附帶農曆數據提取工具,可提取1600到7000年之間的任意年份區間,提取後的數據為壓縮數據,佔用空間小,同時數據包含數九、三伏、入梅和出梅,非常適合寫一份完整的萬年曆。

部分核心演算法函數如下:

//判斷閏年,參數:年份,返回值:0-平年,1-閏年

int IsLeapYear(int iYear);

//計算日期在年內的序數,參數:年,月,日,年內序數,返回值:0-失敗,1-成功

int GetDaysNumInYear(int iYear, int iMonth, int iDay,int *nDays);

//從年內序數計算月、日,參數:年,年內序數,月,日,返回值:0-失敗,1-成功

int GetDateFromDays(int iYear, int nDays, int *iMonth, int *iDay);

//檢驗年、月、日的合法性,參數:年,月,日,返回值:0-失敗,1-成功

int DateCheck(int iYear,int iMonth,int iDay);

//獲取農曆新年的公曆年內序數,參數:農曆年,返回值:農曆新年的公曆年內序數

int LunarGetNewYearOrdinal(int iLunarYear);

//獲取農曆月的天數,參數:農曆年,農曆月,是否為閏月,返回值:該農曆月的天數,為0代表參數無效

int LunarGetDaysofMonth(int iLunarYear,int iLunarMonth,int IsLeapMonth);

//展開大小月數據表(某一年的),參數:農曆年,從上一年十一月開始到當前年份(閏)十二月的每月天數,返回值:0-失敗,1-成功

int LunarExpandDX(int iLunarYear,int iDayOfMonth[15]);

//獲取農曆某一年的閏月情況,參數:農曆年,返回值,該年的閏月月份,0表示無閏月

int LunarGetLeapMonth(int iLunarYear);

//公曆轉農曆,參數:公曆年、月、日,農曆年、月、日,是否為閏月,返回值:0-失敗,1-成功

int Gongli2Nongli(int iYear,int iMonth,int iDay,int *iLunarYear,int *iLunarMonth,int *iLunarDay,int *iIsLeapMonth);

//農曆轉公曆,參數:家歷年、月、日,是否為閏月,公曆年、月、日,返回值:0-失敗,1-成功

int Nongli2Gongli(int iLunarYear,int iLunarMonth,int iLunarDay,int iIsLeapMonth,int *iYear,int *iMonth,int *iDay);

//得到指定年份的節氣信息,首個是小寒

int GetJieQi(int iYear,int uMonth,unsigned int uJieQi[2]);

//計算星期

unsigned int GetDayOfWeek(int iYear,int uMonth,int uDay);

源代碼請看

吧。提取碼:ooj7

JS萬年曆中如何求某天的節氣

同樣的函數,這個卻不能用第402行,按下某日期顯示當前節氣

!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”

HTMLHEADTITLE/TITLE

META http-equiv=Content-Type content=text/html;charset=gb2312

META

META content=All name=robots

META content=”Gregorian Solar Calendar and Chinese Lunar Calendar”

name=description

META content=no-cache name=Pragma

META content=no-cache name=Cache-Control

script language=”JavaScript” src=”jieri.js”/script

script language=”JavaScript” src=”jieqi.js”/script

SCRIPT language=JScript

var conWeekend = 3;

var lunarInfo=new Array(

0x4bd8,0x4ae0,0xa570,0x54d5,0xd260,0xd950,0x5554,0x56af,0x9ad0,0x55d2,

0x4ae0,0xa5b6,0xa4d0,0xd250,0xd295,0xb54f,0xd6a0,0xada2,0x95b0,0x4977,

0x497f,0xa4b0,0xb4b5,0x6a50,0x6d40,0xab54,0x2b6f,0x9570,0x52f2,0x4970,

0x6566,0xd4a0,0xea50,0x6a95,0x5adf,0x2b60,0x86e3,0x92ef,0xc8d7,0xc95f,

0xd4a0,0xd8a6,0xb55f,0x56a0,0xa5b4,0x25df,0x92d0,0xd2b2,0xa950,0xb557,

0x6ca0,0xb550,0x5355,0x4daf,0xa5b0,0x4573,0x52bf,0xa9a8,0xe950,0x6aa0,

0xaea6,0xab50,0x4b60,0xaae4,0xa570,0x5260,0xf263,0xd950,0x5b57,0x56a0,

0x96d0,0x4dd5,0x4ad0,0xa4d0,0xd4d4,0xd250,0xd558,0xb540,0xb6a0,0x95a6,

0x95bf,0x49b0,0xa974,0xa4b0,0xb27a,0x6a50,0x6d40,0xaf46,0xab60,0x9570,

0x4af5,0x4970,0x64b0,0x74a3,0xea50,0x6b58,0x5ac0,0xab60,0x96d5,0x92e0,

0xc960,0xd954,0xd4a0,0xda50,0x7552,0x56a0,0xabb7,0x25d0,0x92d0,0xcab5,

0xa950,0xb4a0,0xbaa4,0xad50,0x55d9,0x4ba0,0xa5b0,0x5176,0x52bf,0xa930,

0x7954,0x6aa0,0xad50,0x5b52,0x4b60,0xa6e6,0xa4e0,0xd260,0xea65,0xd530,

0x5aa0,0x76a3,0x96d0,0x4afb,0x4ad0,0xa4d0,0xd0b6,0xd25f,0xd520,0xdd45,

0xb5a0,0x56d0,0x55b2,0x49b0,0xa577,0xa4b0,0xaa50,0xb255,0x6d2f,0xada0,

0x4b63,0x937f,0x49f8,0x4970,0x64b0,0x68a6,0xea5f,0x6b20,0xa6c4,0xaaef,

0x92e0,0xd2e3,0xc960,0xd557,0xd4a0,0xda50,0x5d55,0x56a0,0xa6d0,0x55d4,

0x52d0,0xa9b8,0xa950,0xb4a0,0xb6a6,0xad50,0x55a0,0xaba4,0xa5b0,0x52b0,

0xb273,0x6930,0x7337,0x6aa0,0xad50,0x4b55,0x4b6f,0xa570,0x54e4,0xd260,

0xe968,0xd520,0xdaa0,0x6aa6,0x56df,0x4ae0,0xa9d4,0xa4d0,0xd150,0xf252,

0xd520);

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 timeData = {

“Asia 亞洲”: { //———————————————-

“Brunei 汶萊 “:[“+0800″,””,”斯里巴加灣市”],

“Burma 緬甸 “:[“+0630″,””,”仰光”],

“Cambodia 柬埔寨 “:[“+0700″,””,”金邊”],

“China 中國 “:[“+0800″,””,”北京、重慶、上海、天津”],

“China(HK,Macau) 中國 “:[“+0800″,””,”香港、澳門特區”],

“China(TaiWan) 中國 “:[“+0800″,””,”台北、高雄”],

“China(Urumchi) 中國 “:[“+0700″,””,”烏魯木齊”],

“Indonesia 印尼 “:[“+0700″,””,”雅加達”],

“Poland 波蘭 “:[“+0100″,””,”華沙”],

“國際換日線 “:[“-1200″,””,”國際換日線”]

}

};

function lYearDays(y) {

var i, sum = 348;

for(i=0x8000; i0x8; i=1) sum += (lunarInfo[y-1900] i)? 1: 0;

return(sum+leapDays(y));

}

function leapDays(y) {

if(leapMonth(y)) return( (lunarInfo[y-1899]0xf)==0xf? 30: 29);

else return(0);

}

function leapMonth(y) {

var lm = lunarInfo[y-1900] 0xf;

return(lm==0xf?0:lm);

}

function monthDays(y,m) {

return( (lunarInfo[y-1900] (0x10000m))? 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; i2050 offset0; i++) {

temp = lYearDays(i)

offset -= temp

this.monCyl += 12

}

if(offset0) {

offset += temp;

i–;

this.monCyl -= 12

}

this.year = i

this.yearCyl = i-1864

leap = leapMonth(i) //閏哪個月

this.isLeap = false

for(i=1; i13 offset0; i++) {

//閏月

if(leap0 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 leap0 i==leap+1)

if(this.isLeap)

{ this.isLeap = false; }

else

{ this.isLeap = true; –i; –this.monCyl;}

if(offset0){ 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; //公元年4位數字

this.sMonth = sMonth; //公元月數字

this.sDay = sDay; //公元日數字

this.week = week; //星期, 1個中文

//農曆

this.lYear = lYear; //公元年4位數字

this.lMonth = lMonth; //農曆月數字

this.lDay = lDay; //農曆日數字

this.isLeap = isLeap; //是否為農曆閏月?

//八字

this.cYear = cYear; //年柱, 2個中文

this.cMonth = cMonth; //月柱, 2個中文

this.cDay = cDay; //日柱, 2個中文

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());

}

function strDate(objDate)

{

var tY = objDate.getFullYear();

var tM = objDate.getMonth()+1;

var tD = objDate.getDate();

var tH = objDate.getHours();

var s;

s=+tY+”年”+tM+”月”+tD+”日”+tH+”時”;

return s;

}

function GetTerm(objDate) {

var year=objDate.getFullYear();

var d;

var i;

for (i=1;i23;i+=2) {

d=sTerm(year,i);

if (objDated) break;

}

if (i==1) i=23;

return i;

}

function calendar(y,m) {

var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2, tmp3, BMjqFtvl;

var cY, cM, cD; //年柱,月柱,日柱

var lDPOS = new Array(3);

var n = 0;

var firstLM = 0;

sDObj = new Date(y,m,1,0,0,0,0); //當月一日日期

this.length = solarDays(y,m); //公曆當月天數

this.firstWeek = sDObj.getDay(); //公曆當月1日星期幾

if(m2) cY=cyclical(y-1900+36-1);

else cY=cyclical(y-1900+36);

var term2=sTerm(y,2); //立春日期

var firstNode = sTerm(y,m*2) //返回當月「節」為幾日開始

cM = cyclical((y-1900)*12+m+12);

var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;

for(var i=0;ithis.length;i++) {

if(lDlX) {

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;

}

if(m==1 (i+1)==term2) cY=cyclical(y-1900+36);

if((i+1)==firstNode) cM = cyclical((y-1900)*12+m+13);

cD = cyclical(dayCyclical+i);

this[i] = new calElement(y, m+1, i+1, nStr1[(i+this.firstWeek)%7],

lY, lM, lD++, lL,

cY ,cM, cD );

}

sFtv = new Array(

“0101*新年元旦”,

“0312 植樹節 孫中山逝世紀念日”,

“0314 國際警察日”)

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’;

}

}

function cMonth(d){

var s;

switch (d) {

case 1: s = ‘正’; break;

case 11: s = ‘冬’; break;

case 12: s = ‘臘’; break;

break;

default :

s = nStr1[d%12];

}

return(s);

}

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

}

var cld;

function drawCld(years,months) {

var i,sD,s,size;

cld = new calendar(years,months);

if(years1874 years1909) yDisplay = ‘光緒’ + (((years-1874)==1)?’元’:years-1874);

if(years1908 years1912) yDisplay = ‘宣統’ + (((years-1908)==1)?’元’:years-1908);

if(years1911 years1950) yDisplay = ‘民國’ + (((years-1911)==1)?’元’:years-1911);

if(years1948) yDisplay = ‘建國font color=red’ + (((years-1949)==1)?’元’:years-1949);

GZ.innerHTML = yDisplay+’/font年’+’/a ‘+Animals[(years-4)%12]+’年[農曆font color=red’ + cyclical(years-1900+36)+’/font年]’;

for(i=0;i42;i++) {

sObj=eval(‘SD’+ i);

lObj=eval(‘LD’+ i);

sObj.className = ”;

sD = i – cld.firstWeek;

if(sD-1 sDcld.length) { //日期內

sObj.innerHTML = sD+1;

if(cld[sD].isToday) sObj.className = ‘todyaColor’; //今日顏色

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].solarFestival;

if(s.length0) {//公曆節日

size = (s.charCodeAt(0)0 s.charCodeAt(0)128)?8:4;

if(s.lengthsize+2) s = s.substr(0, size)+’…’;

s=(s==’黑色星期五’)?s.fontcolor(‘black’):s.fontcolor(‘blue’);

}

else {

s=cld[sD].lunarFestival;

if(s.length0) { //農曆節日

if(s.length6) s = s.substr(0, 4)+’…’;

s = s.fontcolor(‘red’);

}

else { //廿四節氣

s=cld[sD].solarTerms;

if(s.length0) s = s.fontcolor(‘limegreen’);

}

}

if(s.length0) lObj.innerHTML = s;

}

else { //非日期

sObj.innerHTML = ”;

lObj.innerHTML = ”;

}

}

}

function changeCld() {

var y,m;

y=CLD.years.selectedIndex+1900;

m=CLD.months.selectedIndex;

drawCld(y,m);

}

var Today = new Date();

var tY = Today.getFullYear();

var tM = Today.getMonth();

var tD = Today.getDate();

var width = “130”;

var offsetx = 2;

var offsety = 8;

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,sjqFtvl;

var sObj=eval(‘SD’+ v);

var d=sObj.innerHTML-1;

if(sObj.innerHTML!=”) {

sObj.style.cursor= ‘help’;

if(cld[d].solarTerms == ” cld[d].solarFestival == ” cld[d].lunarFestival == ”)

festival = ”;

else

festival = ‘TABLE WIDTH=100% BORDER=0 CELLPADDING=2 CELLSPACING=0 BGCOLOR=”#CCFFCC”TRTD ALIGN=”center”‘+

‘FONT COLOR=”#000000″ STYLE=”font-size:9pt;”‘+cld[d].solarTerms + ‘ ‘ +’/FONT/TD’+

‘/TR/TABLE’;

s= ‘table border=”2″ width=”140″ bordercolor=”#0066CC” bgcolor=”#FFFBE8″ cellpadding=”0″ cellspacing=”0″TRtd’ +

‘TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0TRTD ALIGN=”center”FONT COLOR=”#ff00ff” STYLE=”font-size:9pt;”‘+

cld[d].sYear+’年’+cld[d].sMonth+’月’+cld[d].sDay+’日 星期’+cld[d].week+’br’+

‘font color=”#FF8000″農曆’+cld[d].cYear+’年’+(cld[d].isLeap?’ 閏’:’ ‘)+cMonth(cld[d].lMonth)+’月’+cDay(cld[d].lDay)+’/fontbr’+

‘font color=”009900″‘+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 jieqi(objDate) {

var year=objDate.getFullYear();

var d; var i; var m

for (i=0;i24;i+=1) {

d=sTerm(year,i);

m=i

if (objDate=d) break;

} return m

}

function mDown(V) {

var sObj=eval(‘SD’+ V);

var D=sObj.innerHTML-1;

var ya=cld[D].sYear;//獲得當前公曆日期!

var ma=cld[D].sMonth;

var da=cld[D].sDay;

var Today=new Date(ya,ma,da,0,0,0)

m=jieqi(Today)

document.all.s3.value=m

}

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(”);

}

else return(”);

}

function initialize() {

dStyle = detail.style;

CLD.years.selectedIndex=tY-1900;

CLD.months.selectedIndex=tM;

drawCld(tY,tM);

}

/SCRIPT

STYLE

.todyaColor {BACKGROUND-COLOR: aqua}

/STYLEMETA content=”MSHTML 6.00.2900.2802″ name=GENERATOR/HEAD

BODY onload=initialize()

DIV id=detail

style=”Z-INDEX: 3; FILTER: shadow(color=#333333,direction=135); WIDTH: 140px; POSITION: absolute; HEIGHT: 120px”/DIV

CENTER

TABLE border=0

TBODY

TR

FORM name=xz

TD width=440 align=center vAlign=top bgcolor=”#CCCCCC”

label122

textarea width=440 name=”textarea”/textarea

/label

/FORM

FORM name=CLD

TD align=middle

TABLE width=”300″ border=”0″ cellSpacing=1 cellPadding=0

TR TBODY TR bgcolor=”#319AFF”

TD colSpan=7 align=”center”FONT style=”FONT-SIZE: 9pt”

color=#9900CC size=3 公元

SELECT onchange=changeCld() name=years SCRIPT language=JavaScript for(i=1900;i2101;i++) document.write(‘option’+i)/SCRIPT /SELECT年

SELECT onchange=changeCld() name=months SCRIPT language=JavaScript for(i=1;i13;i++) document.write(‘option’+i) /SCRIPT /SELECT月

第 input name=”s3″ type=”text” size=”2″ 個節氣

SELECT name=hours SCRIPT language=JavaScript for(i=1;i13;i++) document.write(‘option’+i) /SCRIPT /SELECT時 /FONT TR align=middle bgColor=#FF9900

TD width=54FONT color=red日/FONTFONT color=”#e7f7fe”SUN/FONT/TD

TD width=54一FONT color=”#e7f7fe”MON/FONT/TD

TD width=54二FONT color=”#e7f7fe”TUE/FONT/TD

TD width=54三FONT color=”#e7f7fe”WED/FONT/TD

TD width=54四FONT color=”#e7f7fe”THR/FONT/TD

TD width=54五FONT color=”#e7f7fe”FRI/FONT/TD

TD width=54FONT color=green六/FONTFONT color=”#e7f7fe”SAT/FONT/TD/TR

SCRIPT language=JavaScript!–

var gNum

for(i=0;i6;i++) {

document.write(‘tr align=center’)

for(j=0;j7;j++) {

gNum = i*7+j

document.write(‘td id=”GD’ + gNum +'” onMouseOver=”mOvr(‘ + gNum +’)” onMouseOut=”mOut()” onMouseDown=”mDown(‘ + gNum +’)”‘)

document.write(‘font id=”SD’ + gNum +'” size=5 face=”Arial Black”‘)

if(j == 0) document.write(‘ color=red’)

if(j == 6)

if(i%2==1) document.write(‘ color=red’)

else document.write(‘ color=green’)

document.write(‘ TITLE=”” /fontbrfont id=”LD’ + gNum + ‘” size=2 style=”font-size:9pt;” /font/td’)

}

document.write(‘/tr’)

}

//–/SCRIPT

/TBODY/TABLE/TD

TD width=60 align=middle vAlign=top bgcolor=”#CCCCCC”BRBR P TR TD align=right bgColor=#00aa55 colSpan=8FONT color=#fffff face=宋體 id=GZ/FONT/TD/TR/TBODY/TABLE/TD/FORM/CENTER/TR/TBODY/TABLE/CENTER/BODY/HTML

如何用JavaScript編寫一個萬年曆

html

head

base fptype=”TRUE”

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″

title本地時間/title

scriptsetInterval(“jnkc.innerHTML=new Date().toLocaleString()+’ 星期’+’日一二三四五六’.charAt(new Date().getDay());”,1000);/script

marquee scrollamount=8div id=’jnkc’/div

/marquee

/head

body

script language=javascript

function settab()

{

var tab=document.getElementById(‘tab1’);

//alert(se1.options[se1.selectedIndex].text)

var se11=se1.options[se1.selectedIndex].text;

var se21=se2.options[se2.selectedIndex].text;//下拉列表中的日期

//alert(se11+”,”+se21)

var lastday=new Date(se11,se21,0).getDate();//所選擇月的天數

var firstday=new Date(se11,se21-1,1).getDay();//選擇月的第一天是星期幾

//alert(lastday+”,”+firstday)

var weekend;//每周的最後一天的日期

var lines;//第幾行,相對於表格,星期為第零行

//第一行日期

for(var lin1=0;lin17;lin1++)

{

if(lin1firstday)

tab.rows[1].cells[lin1].innerHTML=” “;

else

if(lin1==0||lin1==6)

tab.rows[1].cells[lin1].innerHTML=”font color=red”+(lin1-firstday+1)+”/font”;

else

tab.rows[1].cells[lin1].innerHTML=lin1-firstday+1;

//alert(lin1+”,”+firstday)

weekend=lin1-firstday+1;

lines=1;//第一行

}

//將最後2行值空之後再添加數據,以免遺留上一個月的數據,二行相對於非閏年的二月份

for(var i=0;i7;i++)

{

tab.rows[5].cells[i].innerHTML=” “;

tab.rows[6].cells[i].innerHTML=” “;

}

while(weekendlastday)//循環到月末

{

for(var lin2=0;lin27;lin2++)

{

if(weekend+lin2lastday)//數字小於等於當前月的最後一天

{

if(lin2==0||lin2==6)

tab.rows[lines+1].cells[lin2].innerHTML=”font color=red”+(weekend+1+lin2)+”/font”;

else

tab.rows[lines+1].cells[lin2].innerHTML=weekend+1+lin2;

}

求論壇日曆JS代碼

我給你啊 。。。。。。。。。。~~~~~~~~~~~

function UncCalendar (sName, sDate)

{

/////////////////////////////////////////////////////////////////////////

//定義UncCalendar對象的屬性並賦默認值。

//inputValue屬性的值為”today”時表示(客戶機)當前日期。

//直接在這裡把默認值修改成你想要的,使用時你就什麼也不用設置了。

this.inputName = sName || “uncDate”;

this.inputValue = sDate || “”;

this.inputSize = 10;

this.inputClass = “”;

this.color = “#333333”;

this.bgColor = “#EEEEEE”;

this.buttonWidth = 60;

this.buttonWords = “選擇日期”;

this.canEdits = true;

this.hidesSelects = true;

/////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////

//定義display方法。

this.display = function ()

{

var reDate = /^(19[7-9]\d|20[0-5]\d)\-(0?\d|1[0-2])\-([0-2]?\d|3[01])$/;

if (reDate.test(this.inputValue))

{

var dates = this.inputValue.split(“-“);

var year = parseInt(dates[0], 10);

var month = parseInt(dates[1], 10);

var mday = parseInt(dates[2], 10);

}

else

{

var today = new Date();

var year = today.getFullYear();

var month = today.getMonth()+1;

var mday = today.getDate();

}

if (this.inputValue == “today”)

inputValue = year + “-” + month + “-” + mday;

else

inputValue = this.inputValue;

var lastDay = new Date(year, month, 0);

lastDay = lastDay.getDate();

var firstDay = new Date(year, month-1, 1);

firstDay = firstDay.getDay();

var btnBorder =

“border-left:1px solid ” + this.color + “;” +

“border-right:1px solid ” + this.color + “;” +

“border-top:1px solid ” + this.color + “;” +

“border-bottom:1px solid ” + this.color + “;”;

var btnStyle =

“padding-top:3px;cursor:default;width:” + this.buttonWidth + “px;text-align:center;height:18px;top:-9px;” +

“font:normal 12px 宋體;position:absolute;z-index:99;background-color:” + this.bgColor + “;” +

“line-height:12px;” + btnBorder + “color:” + this.color + “;”;

var boardStyle =

“position:absolute;width:1px;height:1px;background:” + this.bgColor + “;top:8px;border:1px solid “+

this.color + “;display:none;padding:3px;”;

var buttonEvent =

” onmouseover=\”this.childNodes[0].style.borderBottom=’0px’;” +

“this.childNodes[1].style.display=”;this.style.zIndex=100;” +

(this.hidesSelects ?

“var slts=document.getElementsByTagName(‘SELECT’);” +

“for(var i=0;islts.length;i++)slts[i].style.visibility=’hidden’;”

: “”) + “\”” +

” onmouseout=\”this.childNodes[0].style.borderBottom=’1px solid ” + this.color + “‘;” +

“this.childNodes[1].style.display=’none’;this.style.zIndex=99;” +

(this.hidesSelects ?

“var slts=document.getElementsByTagName(‘SELECT’);” +

“for(var i=0;islts.length;i++)slts[i].style.visibility=”;”

: “”) + “\”” +

” onselectstart=\”return false;\””;

var mdayStyle = “font:normal 9px Verdana,Arial,宋體;line-height:12px;cursor:default;color:” + this.color;

var weekStyle = “font:normal 12px 宋體;line-height:15px;cursor:default;color:” + this.color;

var arrowStyle = “font:bold 7px Verdana,宋體;cursor:hand;line-height:16px;color:” + this.color;

var ymStyle = “font:bold 12px 宋體;line-height:16px;cursor:default;color:” + this.color;

var changeMdays =

“var year=parseInt(this.parentNode.cells[2].childNodes[0].innerText);” +

“var month=parseInt(this.parentNode.cells[2].childNodes[2].innerText);” +

“var firstDay=new Date(year,month-1,1);firstDay=firstDay.getDay();” +

“var lastDay=new Date(year,month,0);lastDay=lastDay.getDate();” +

“var tab=this.parentNode.parentNode, day=1;” +

“for(var row=2;row8;row++)” +

” for(var col=0;col7;col++){” +

” if(row==2colfirstDay){” +

” tab.rows[row].cells[col].innerHTML=’ ‘;” +

” tab.rows[row].cells[col].isDay=0;}” +

” else if(day=lastDay){” +

” tab.rows[row].cells[col].innerHTML=day;” +

” tab.rows[row].cells[col].isDay=1;day++;}” +

” else{” +

” tab.rows[row].cells[col].innerHTML=”;” +

” tab.rows[row].cells[col].isDay=0;}” +

” }”;

var pyEvent =

” onclick=\”var y=this.parentNode.cells[2].childNodes[0];y.innerText=parseInt(y.innerText)-1;” +

changeMdays + “\””;

var pmEvent =

” onclick=\”var y=this.parentNode.cells[2].childNodes[0];m=this.parentNode.cells[2].childNodes[2];” +

“m.innerText=parseInt(m.innerText)-1;if(m.innerText==’0′){m.innerText=12;y.innerText=” +

“parseInt(y.innerText)-1;}” + changeMdays + “\””;

var nmEvent =

” onclick=\”var y=this.parentNode.cells[2].childNodes[0];m=this.parentNode.cells[2].childNodes[2];” +

“m.innerText=parseInt(m.innerText)+1;if(m.innerText==’13’){m.innerText=1;y.innerText=” +

“parseInt(y.innerText)+1;}” + changeMdays + “\””;

var nyEvent =

” onclick=\”var y=this.parentNode.cells[2].childNodes[0];y.innerText=parseInt(y.innerText)+1;” +

changeMdays + “\””;

var mdayEvent =

” onmouseover=\”if(event.srcElement.tagName==’TD’event.srcElement.isDay){” +

“event.srcElement.style.backgroundColor='” + this.color + “‘;” +

“event.srcElement.style.color='” + this.bgColor + “‘;” +

“event.srcElement.style.cursor=’hand’;” +

“var ym=event.srcElement.parentNode.parentNode.rows[0].cells[2].childNodes;” +

“event.srcElement.title=ym[0].innerText+’-‘+ym[2].innerText+’-‘+event.srcElement.innerText;}\”” +

” onmouseout=\”if(event.srcElement.tagName==’TD’event.srcElement.isDay){” +

“event.srcElement.style.backgroundColor='” + this.bgColor + “‘;” +

“event.srcElement.style.color='” + this.color + “‘;” +

“event.srcElement.style.cursor=’default’;” +

“var ym=event.srcElement.parentNode.parentNode.rows[0].cells[2].childNodes;” +

“event.srcElement.title=ym[0].innerText+’-‘+ym[2].innerText+’-‘+event.srcElement.innerText;}\”” +

” onclick=\”if(event.srcElement.tagName==’TD’event.srcElement.isDay){” +

“var inp=this.parentNode.parentNode.parentNode.previousSibling.childNodes[0];” +

“inp.value=this.rows[0].cells[2].childNodes[0].innerText+’-‘+this.rows[0].cells[2].childNodes[2].” +

“innerText+’-‘+event.srcElement.innerText;” +

“this.parentNode.style.display=’none’;this.parentNode.parentNode.style.zIndex=99;” +

“this.parentNode.previousSibling.style.borderBottom=’1px solid ” + this.color + “‘;” +

(this.hidesSelects ?

“var slts=document.getElementsByTagName(‘SELECT’);” +

“for(var i=0;islts.length;i++)slts[i].style.visibility=”;”

: “”) + “}\””;

var output = “”;

output += “table cellpadding=0 cellspacing=1 style=’display:inline;’tr”;

output += ” tdinput size=” + this.inputSize + ” maxlength=10 value=\”” + inputValue + “\””;

output += (this.canEdits ? “” : ” readonly”) + ” name=\”” + this.inputName + “\”/td”;

output += ” td width=” + this.buttonWidth + “”;

output += ” div style=\”position:absolute;overflow:visible;width:0px;height:0px;\”” + buttonEvent + “”;

output += ” div style=\”” + btnStyle + “\”nobr” + this.buttonWords + “/nobr/div”;

output += ” div style=\”” + boardStyle + “\””;

output += ” table cellspacing=1 cellpadding=1 width=175″ + mdayEvent + “”;

output += ” tr height=20 align=center”;

output += ” td style=\”” + arrowStyle + “\” title=\”上一年\”” + pyEvent + “/td”;

output += ” td style=\”” + arrowStyle + “\” align=left title=\”上個月\”” + pmEvent + “/td”;

output += ” td colspan=3 style=\”” + ymStyle + “\” valign=bottom”;

output += ” span” + year + “/spanspan年/spanspan” + month + “/spanspan月/span”;

output += ” /td”;

output += ” td style=\”” + arrowStyle + “\” align=right title=\”下個月\”” + nmEvent + “/td”;

output += ” td style=\”” + arrowStyle + “\” title=\”下一年\”” + nyEvent + “/td”;

output += ” /tr”;

output += ” tr height=20 align=center bgcolor=” + this.bgColor + “”;

output += ” td width=14% style=\”” + weekStyle + “\”日/td”;

output += ” td width=14% style=\”” + weekStyle + “\”一/td”;

output += ” td width=14% style=\”” + weekStyle + “\”二/td”;

output += ” td width=14% style=\”” + weekStyle + “\”三/td”;

output += ” td width=14% style=\”” + weekStyle + “\”四/td”;

output += ” td width=14% style=\”” + weekStyle + “\”五/td”;

output += ” td width=14% style=\”” + weekStyle + “\”六/td”;

output += ” /tr”;

var day = 1;

for (var row=0; row6; row++)

{

output += “tr align=center”;

for (var col=0; col7; col++)

{

if (row == 0 col firstDay)

output += “td style=\”” + mdayStyle + “\” /td”;

else if (day = lastDay)

{

output += “td style=\”” + mdayStyle + “\” isDay=1″ + day + “/td”;

day++;

}

else

output += “td style=\”” + mdayStyle + “\”/td”;

}

output += “/tr”;

}

output += ” /table”;

output += ” /div”;

output += ” /div”;

output += ” /td”;

output += “/tr/table”;

document.write(output);

}

/////////////////////////////////////////////////////////////////////////

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/269966.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 13:34
下一篇 2024-12-16 13:34

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • Python萬年曆系統分析

    Python萬年曆系統是一款基於Python的開源萬年曆系統。本文將從多個方面對其進行詳細的闡述。 一、系統功能 Python萬年曆系統主要功能包括: 1、查詢陽曆、農曆日期; 2…

    編程 2025-04-29
  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • 解析js base64並轉成unit

    本文將從多個方面詳細介紹js中如何解析base64編碼並轉成unit格式。 一、base64編碼解析 在JavaScript中解析base64編碼可以使用atob()函數,它會將b…

    編程 2025-04-29
  • Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的解決方法

    本文將解決Node.js使用Body-Parser處理HTTP POST請求時,特殊字元無法返回的問題。同時,給出一些相關示例代碼,以幫助讀者更好的理解並處理這個問題。 一、問題解…

    編程 2025-04-29
  • t3.js:一個全能的JavaScript動態文本替換工具

    t3.js是一個非常流行的JavaScript動態文本替換工具,它是一個輕量級庫,能夠很容易地實現文本內容的遞增、遞減、替換、切換以及其他各種操作。在本文中,我們將從多個方面探討t…

    編程 2025-04-28
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28
  • 源碼是什麼

    源碼是一段計算機程序的原始代碼,它是程序員所編寫的可讀性高、理解性強的文本。在計算機中,源碼是指編寫的程序代碼,這些代碼按照一定規則排列,被計算機識別並執行。 一、源碼的組成 源碼…

    編程 2025-04-27
  • JS圖片沿著SVG路徑移動實現方法

    本文將為大家詳細介紹如何使用JS實現圖片沿著SVG路徑移動的效果,包括路徑製作、路徑效果、以及實現代碼等內容。 一、路徑製作 路徑的製作,我們需要使用到SVG,SVG是可縮放矢量圖…

    編程 2025-04-27
  • Go源碼閱讀

    Go語言是Google推出的一門靜態類型、編譯型、並髮型、語法簡單的編程語言。它因具有簡潔高效,內置GC等優秀特性,被越來越多的開發者所鍾愛。在這篇文章中,我們將介紹如何從多個方面…

    編程 2025-04-27

發表回復

登錄後才能評論