⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stchinesecalendar.js

📁 超炫日历超炫日历超炫日历超炫日历超炫日历超炫日历超炫日历超炫日历超炫日历
💻 JS
字号:
{
	sTitle:"中国农历",
	iType:0,
	foTranslation:function(y,m,d,h,mi,s,ms)
	{
		var i, leap=0, temp=0,o={};
		//-2206396800000 为Date.UTC(1900,0,31)由于safari 1.0不明 bug,暂时给东8区固定值;
		var offset   = (Date.UTC(y,m-1,d) - (-2206396800000))/86400000;
		for(i=1900; i<2100 && offset>0; i++)
		{ 
			temp=this.fiLYearDays(i); 
			offset-=temp; 
		}
		if(offset<0)
		{ 
			offset+=temp;
			i--; 
		}
		o.iYear = i;
		leap = this.fbLeapMonth(i);
		o.bIsLeap = false;
		for(i=1; i<13 && offset>0; i++)
		{
			if(leap>0 && i==(leap+1) && o.bIsLeap==false)
			{ 
				--i; 
				o.bIsLeap = true; 
				temp = this.fiLeapDays(o.iYear); 
			}
			else 
			{ 
				temp = this.fiMonthDays(o.iYear, i); 
			}
			if(o.bIsLeap==true && i==(leap+1))
				o.bIsLeap = false;
			offset -= temp;
		}
		if(offset==0 && leap>0 && i==leap+1)
			if(o.bIsLeap)
			{ 
				o.bIsLeap = false; 
			}
			else
			{ 
				o.bIsLeap = true;
				 --i; 
			}
		if(offset<0)
		{ 
			offset += temp; --i; 
		}
		if(m<2)
		{
			o.sCY=this.cyclical(y-1900+36-1);
			o.sAnimal=this.aAnimals[Math.floor((y-1900+36-1)%12)];
		} 
		else
		{ 
			o.sCY=this.cyclical(y-1900+36);
			o.sAnimal=this.aAnimals[Math.floor((y-1900+36)%12)];
		}
		var term2=this.fsTerm(y,2);
		var firstNode =this.fsTerm(y,m*2)
		var dayCyclical = Date.UTC(y,m,1,0,0,0,0)/86400000+25567+10;
		o.sCM=this.cyclical((y-1900)*12+m+12);
				if(m==2 && d==term2){ 
			o.sCY==this.cyclical(y-1900+36);
		}
		if(d==firstNode) 
		{
			o.sCM= this.cyclical((y-1900)*12+m+13);
		}
		o.sCD =this. cyclical(dayCyclical+d-1);
		o.oParent=this;
		o.iMonth = i;
		o.iDay = offset + 1;
		o.sIco='images/nong.gif';
		o.fsGetSimpleTxt=this.fsGetSimpleTxt;
		o.fsGetWholeTxt=this.fsGetWholeTxt;
		o.fsGetIco=this.fsGetIco;
		o.sTerm="";
		if(this.fsTerm(y,(m-1)*2)==d)
			o.sTerm=this.aTerm[(m-1)*2];
		else if(this.fsTerm(y,(m-1)*2+1)==d)
			o.sTerm=this.aTerm[(m-1)*2+1];
		o.sFtv="";
		for(var i=0;i<this.aFtv.length;i++)
			if(this.aFtv[i].match(/^(\d{2})(.{2})([\s\*])(.+)$/))
				if(o.iMonth==Number(RegExp.$1) && o.iDay==Number(RegExp.$2))
					o.sFtv=RegExp.$4;
		return o;	
	},
	fiParse:function(s)
	{
	},
	fsGetIco:function()
	{
		return this.sIco;
	},
	fsGetSimpleTxt:function()
	{
		if(this.sFtv)
			return "<span class='ccalendarFestival'>"+this.sFtv+"</span>";
		if(this.sTerm)
			return "<span class='ccalelndarTerm'>"+this.sTerm+"</span>";
		return this.oParent.fsGetDayStr(this.iDay);	
	},
	fsGetWholeTxt:function()
	{
		return "<table cellpadding=0 cellspacing=0><td valign='top'><img src='"+this.sIco+"'></td><td style='float:left'>"+this.sCY+this.sAnimal+"年 "+(this.bIsLeap?"闰":"")+this.oParent.fsGetMonthStr(this.iMonth)+"月 "+this.oParent.fsGetDayStr(this.iDay)+" "+this.sFtv+" "+this.sTerm+"</td></table>";
	},
	fsGetMonthStr:function(d)
	{
		var s2="";
		switch (d) 
		{
			case 1:
				s2 = '正'; break;
			case 2:
				s2 = '二'; break;
			case 3:
				s2 = '三'; break;
			case 4:
				s2 = '四'; break;
			case 5:
				s2 = '五'; break;
			case 6:
				s2 = '六'; break;
			case 7:
				s2 = '七'; break;
			case 8:
				s2 = '八'; break;
			case 9:
				s2 = '九'; break;
			case 10:
				s2 = '十'; break;
			case 11:
				s2 = '十一'; break;
			case 12:
				s2 = '十二'; break;
		}
		return(s2);
	},
	cyclical:function(num)
	{
		return(this.aGan[Math.floor(num%10)]+this.aZhi[Math.floor(num%12)])
	},
	fsGetDayStr:function(d)
	{
		var s;
		if(d>30)
			return "";
		switch (d) 
		{
			case 10:
				s = '初十'; break;
			case 20:
				s = '二十'; break;
			case 30:
				s = '三十'; break;
			default:
				s = this.aPerfix[Math.floor(d/10)]+this.aNumber[Math.floor(d%10)];
		}
		return s;
	},
	aLunarDat:[
				"19416",
				"19168",
				"42352",
				"21717",
				"53856",
				"55632",
				"21844",
				"22191",
				"39632",
				"21970",
				"19168",
				"42422",
				"42192",
				"53840",
				"53909",
				"46415",
				"54944",
				"44450",
				"38320",
				"18807",
				"18815",
				"42160",
				"46261",
				"27216",
				"27968",
				"43860",
				"11119",
				"38256",
				"21234",
				"18800",
				"25958",
				"54432",
				"59984",
				"27285",
				"23263",
				"11104",
				"34531",
				"37615",
				"51415",
				"51551",
				"54432",
				"55462",
				"46431",
				"22176",
				"42420",
				"9695",
				"37584",
				"53938",
				"43344",
				"46423",
				"27808",
				"46416",
				"21333",
				"19887",
				"42416",
				"17779",
				"21183",
				"43432",
				"59728",
				"27296",
				"44710",
				"43856",
				"19296",
				"43748",
				"42352",
				"21088",
				"62051",
				"55632",
				"23383",
				"22176",
				"38608",
				"19925",
				"19152",
				"42192",
				"54484",
				"53840",
				"54616",
				"46400",
				"46752",
				"38310",
				"38335",
				"18864",
				"43380",
				"42160",
				"45690",
				"27216",
				"27968",
				"44870",
				"43872",
				"38256",
				"19189",
				"18800",
				"25776",
				"29859",
				"59984",
				"27480",
				"23232",
				"43872",
				"38613",
				"37600",
				"51552",
				"55636",
				"54432",
				"55888",
				"30034",
				"22176",
				"43959",
				"9680",
				"37584",
				"51893",
				"43344",
				"46240",
				"47780",
				"44368",
				"21977",
				"19360",
				"42416",
				"20854",
				"21183",
				"43312",
				"31060",
				"27296",
				"44368",
				"23378",
				"19296",
				"42726",
				"42208",
				"53856",
				"60005",
				"54576",
				"23200",
				"30371",
				"38608",
				"19195",
				"19152",
				"42192",
				"53430",
				"53855",
				"54560",
				"56645",
				"46496",
				"22224",
				"21938",
				"18864",
				"42359",
				"42160",
				"43600",
				"45653",
				"27951",
				"44448",
				"19299",
				"37759",
				"18936",
				"18800",
				"25776",
				"26790",
				"59999",
				"27424",
				"42692",
				"43759",
				"37600",
				"53987",
				"51552",
				"54615",
				"54432",
				"55888",
				"23893",
				"22176",
				"42704",
				"21972",
				"21200",
				"43448",
				"43344",
				"46240",
				"46758",
				"44368",
				"21920",
				"43940",
				"42416",
				"21168",
				"45683",
				"26928",
				"29495",
				"27296",
				"44368",
				"19285",
				"19311",
				"42352",
				"21732",
				"53856",
				"59752",
				"54560",
				"55968",
				"27302",
				"22239",
				"19168",
				"43476",
				"42192",
				"53584",
				"62034",
				"54560"
			],
		aTermDat:[	0,
					21208,
					42467,
					63836,
					85337,
					107014,
					128867,
					150921,
					173149,
					195551,
					218072,
					240693,
					263343,
					285989,
					308563,
					331033,
					353350,
					375494,
					397447,
					419210,
					440795,
					462224,
					483532,
					504758
				],	
		aNumber:['零','一','二','三','四','五','六','七','八','九','十'],
		aAnimals:["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"],
		aPerfix:['初','十','廿','卅',' '],
		aGan:["甲","乙","丙","丁","戊","已","庚","辛","壬","癸"],
		aZhi:["子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"],
		aTerm:["小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至"],
		aFtv:[	"0101*春节",
			 	"0115*元宵",
			 	"0505*端午",
			 	"0815*中秋",
			 	"0909 重阳",
			 	"1208 腊八",
			 	"1224 小年",
			 	"0100*除夕"],
		fiLYearDays:function(y)
		{
			var i, sum = 348;
			for(i=0x8000; i>0x8; i>>=1) sum += (this.aLunarDat[y-1900] & i)? 1: 0;
			return(sum+this.fiLeapDays(y));			
		},
		fiLeapDays:function(y) {
			if(this.fbLeapMonth(y)) return( (this.aLunarDat[y-1899]&0xf)==0xf? 30: 29);
			else return(0);
		},
		fbLeapMonth:function(y) {
			var lm = this.aLunarDat[y-1900] & 0xf;
			return(lm==0xf?0:lm);
		},
		fiMonthDays:function(y,m) {
			return( (this.aLunarDat[y-1900] & (0x10000>>m))? 30: 29 )
		},
		fsTerm:function(y,n) 
		{
			//-2208549300000为 Date.UTC(1900,0,6,2,5),由于safari 1.0不明 bug,暂时给东8区固定值
		   var offDate = new Date( ( 31556925974.7*(y-1900) + this.aTermDat[n]*60000 ) + (-2208549300000) )
		   return(offDate.getUTCDate())
		}					
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -