Javascript实现节日和阴历的特殊日历效果。
带农历和月历的脚本:复制代码代码如下所示:
月历
<!——
无功lunarinfo =新的数组(
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)
无功solarmonth =新的数组(31,28,31,30,31,30,31,31,30,31,30,31);
var动物=新数组()
VaR个节气=新的数组(冷
无功sterminfo =新的数组(021208424676383685337107014128867150921173149195551218072240693263343285989308563331033353350375494397447419210440795462224483532504758)。
无功nstr1 =新的数组(天','一','二'、三、四、五、六、七、八、九、十);
无功nstr2 =新的数组(早、十、20 30);
阳历/假日
无功sftv =新的数组(
0101元旦
0214情人节
0308妇女节
0312植树节
0315消费者权益日
0401四月愚人节
0501劳动节
0504青年节
0512护士节
0601儿童节
0701党建设节
0801建军节
0910教师节
0928孔子诞辰
1001国庆节
1006个老人节
1024次联合国日
1224圣诞夜
1225圣诞节
中秋节
无功lftv =新的数组(
0101个春节
0115元宵节
0505端午节
0707七夕情人节
鬼节0715
0815中秋节
0909第九节
1208洛杉矶8
1224年
每年返回农历年的总数。
功能lyeardays(Y){
var I,总和= 348;
对(我= 0x8000;我> > > 0x8;我= 1)和+ =(lunarinfo { }我y-1900)1:0;
返回(和+ leapdays(Y));
}
农历闰年
功能leapdays(Y){
如果(闰月(y)()返回(lunarinfo { y-1900 } 0x10000)30:29);
否则返回(0);
}
农历不是闰年,返回0。
功能闰月(Y){
返回(lunarinfo { y-1900 } 0xf);
}
返回y年的总数量。
功能monthdays(Y,M){
返回(((lunarinfo { y-1900 }(0x10000 > > m))30:29);
}
本月的第一天/计算农历日期和日期的下一个农历月的第一天的日期。
功能dianaday(objdate){
var I,跳跃= 0,温度= 0;
无功basedate =新的日期(1900,0,31);
无功补偿=(objdate - basedate) / 86400000;
this.daycyl =偏移±40;
this.moncyl = 14;
为(i = 1900;I0;i++){
温度= lyeardays(我)
偏移量=温度;
this.moncyl = 12;
}
如果(偏移< 0){
偏移量=温度;
我--;
this.moncyl = 12;
}
this.year =我;
这yearcyl = i-1864;
飞跃=闰月(我); / /运行哪个月
this.isleap = false;
为(i = 1;I0;i++){
如果(飞跃> 0我= =(跳跃+ 1)这。IsLeap = = false){ / /月
我;this.isleap =真;温度= leapdays(本年);}
别的{
温度= monthdays(this.year,I);}
如果(这。IsLeap = =真我= =(跳跃+ 1))this.isleap = false; / /删除的飞跃
偏移量=温度;
如果(this.isleap = = false)这moncyl + +;
}
如果(= = 0跳跃> 0 i =跳跃+ 1)
如果(这。IsLeap){ this.isleap = false;}
别的{。IsLeap = true;--我;这moncyl;}。
如果(偏移量<0){偏移+ =温度;——我;这moncyl;}。
这个月=我;
这一天=偏移量+ 1;
}
1个月的日历日
功能solardays(Y,M){
如果(m=1)
返回((y = 4 = 0)(y % 100)!= 0)| |(% 400 = = 0))29:28);
其他的
返回(solarmonth {米});
}
记录和日期的阴历日。
功能calelement(来,smonth,日,周,1,1月,1天,IsLeap){
this.istoday = false;
日历
this.syear =来;
this.smonth = smonth;
this.sday =快乐;
this.week =周;
{月球}
this.lyear = 1;
this.lmonth = 1月;
this.lday = 1天;
this.isleap = IsLeap;
/节日记录
this.lunarfestival = ''; / /春节
this.solarfestival = ''; / /假期日历
this.solarterms = ''; / /节气
}
返回 / /第N个几天(从节气0 Xiaohan)
功能干(Y,N){
无功offdate =新的日期(31556925974.7 *(y-1900)+ sterminfo { }×60000)+ date.utc(1900,0,6,2,5));
返回(offdate.getutcdate())
}
保存y 1的相关信息。
var = 9;
var=0;
函数日历(y,m){
脂肪=MAT=0;
无功sdobj,ldobj、LY、LM、LD=1,LL,LX = 0,TMP1和TMP2;
VaR LDPOS =新阵(3);
var = 0;
无功firstlm = 0;
sdobj新=日期(Y,M,1); / /日期的一个月的第一天
this.length = solardays(Y,M); / /在一个月的日历天数
this.firstweek =(sdobj。getday); / /阳历的星期天月1
如果(((M + 1)= = 5){脂肪= sdobj.getday()}
如果(((M + 1)= = 6){垫= sdobj.getday()}
对于(var i = 0;i < this.length;i++){
如果(LD = LX){
sdobj新=日期(Y、M、I + 1); / /日期的一个月的第一天
ldobj =新dianaday(sdobj); / /月
LY = ldobj.year; / /农历新年
LM = ldobj.month; / /月
LD = ldobj.day; / /太阴日
将ldobj.isleap; / /农历月
LX =我leapdays(LY):monthdays(LY,LM); / /这个月的最后一天
如果(= = 12){
如果(n = 0)firstlm = LM;
LDPOS { n + + + 1 = i-ld };
}
这{我} =新calelement(Y,M + 1,我1,nstr1 {(我+这个。第一周)% 7 }、LY、LM、LD + +);
如果((我+这个。第一周)% 7 = = 0){
这{我}。颜色='; / /星期日的颜色
}
}
/节气
TMP1 =干(Y、M×2)- 1;
TMP2 =干(Y,M * 2 + 1)- 1;
这{ TMP1 }。节气=个节气{ m×2 };
这{ TMP2 }。节气=个节气{ m×2 + 1 };
如果((这。第一周+ 12)% 7 = = 5)/黑色星期五
这{ 12 }。solarfestival + =黑色星期五;
如果(y = =泰M = = TM)这{ TD-1 }。今天= true; / /今天
}
用中文显示农历日期
功能cday(D){
VaR的;
开关(d){
案例10:
s =突破第十;
案例20:
二十;中断;
打破;
案例30:
三十;中断;
打破;
违约:
S = nstr2 { math.floor(D / 10)};
S = { 10 } nstr1 %;
}
返回(s);
}
VaR的CLD;
功能drawcld(SY,SM){
var =真;
var;
变量I,SD,s,大小;
CLD =新的日历(SY,SM);
gz.innerhtml ={+动物{(sy-4)% 12 } +}; / /农历新年
对于(i = 0;i < 42;i + +){
sobj = eval(高+我);
lobj = eval('ld +我);
sobj.classname =;
SD =我cld.firstweek;
如果(SD > 1 SD<CLD。长度){ / /日期
sobj.innerhtml = SD + 1;
如果(CLD {只},{今天)sobj.style.color =# 9900ff;} / /彩色今天
别的{ sobj.style.color = '';}
如果(CLD { } = = 1天SD,1){ / /显示农历月
lobj.innerhtml(CLD {只}。IsLeap=+飞跃:)++ CLD {只}。1月+七月(monthdays(CLD {只}。1,CLD { SD }。1月)= = 29 ':'大' + ');
}
别的{ lobj.innerhtml = cday(CLD {只}。1d);} / /根据农历
Var Slfw = SSFW = null;
S = { } solarfestival CLD的SD;
对于(VAR IPP = 0;IPP < lftv.length;IPP ++){ / /春节
如果(parseInt(lftv {等}。substr(0,2))=(CLD {只}。1月)){
如果(parseInt(lftv {等}。substr(2,4))=(CLD {只}。1 d)){
lobj .innerHTML = { } lftv IPP函数(5);
比叶重= { } lftv IPP函数(5);
}
}
如果(12 = =(CLD {只}。1月)){ / /确定除夕
如果(夜= =(CLD {只}。1 d)){ lobj .innerHTML =除夕;比叶重=除夕;}
}
}
对于(VAR IPP = 0;IPP < sftv.length;IPP ++){ / /假期日历
如果(parseInt(sftv {等}。substr(0,2))=(SM 1)){
如果(parseInt(sftv {等}。substr(2,4))=(SD 1)){
lobj .innerHTML = { } sftv IPP函数(5);
潜流湿地= sftv { } substr(5)等;
}
}
}
如果(= 5(SM + 1)){母亲节
如果(FAT=0){
如果(((SD 1)= = 7){ SSFW = 母亲节;lobj .innerHTML = 母亲节}
}
否则如果(FAT < 9){
如果((SD 1)=((7-fat)+ 8){ SSFW =)母亲节母亲节lobj .innerHTML = ;}
}
}
如果(= 6(SM + 1)){父亲节
如果(MAT = 0){
如果(((SD 1)= = 14){ SSFW =父亲节;lobj .innerHTML =父亲节}
}
否则如果(MAT < 9){
如果((SD 1)=((7-mat)+ 15){ SSFW =)父亲节;lobj .innerHTML =父亲节。
}
}
如果(s.length <= 0){ / /节气的颜色设置
S = { }节气CLD的SD;
如果(s.length > 0)= s.fontcolor('limegreen);
}
如果(s.length > 0){ lobj .innerHTML = S;比叶重= S;} / /节气
如果((Slfw!= null)(Ssfw!= NULL){
lobj .innerHTML =比叶重+/+潜流式人工湿地;
}
}
其他{日期
sobj.innerhtml =;
lobj.innerhtml =;
}
}
}
在下拉列表中选择日期 / /,调用自定义函数drawcld(),显示相关信息和农历
功能changecld(){
变量,m;
Y = CLD。SY。SelectedIndex + 1900;
M = cld.sm.selectedindex;
DrawCld(Y,M);
}
使用自定义变量保存当前系统日期
var =新日期();
无功即today.getfullyear();
VaR TM = today.getmonth();
VaR技术today.getdate();
/ /打开页面,在下拉列表中显示当前日期,并调用自定义函数drawcld(),显示相关信息和农历
函数初始(){
SelectedIndex = ty-1900 CLD。SY;
CLD。SM。SelectedIndex = TM;
DrawCld(TY,TM);
}
公历
为(i = 1900;i + i);
年
为(i = 1;i + i);
月
白天
一
二
三
四
五
六
var GNUM;
对于(i = 0;i < 6;i + +){
document.write('');
对于(j = 0;j<7;j + +){
GNUM =我* 7 + J;
document.write(<字体ID = SD + GNUM +规模= 2 =黑体);
如果(J = = 0)document.write(颜色=红);
如果(J = = 6)document.write(颜色= # 000080);
document.write(标题=>);
}
document.write('');
}
非常难得,有节日和节气,还有日历上的日历效果,希望大家能喜欢。