Use js para calcular la cantidad de días festivos más cercanos a la hora actual. Si se puede usar, se puede usar para agregar puntos.
//Definir 24 términos solares
Calendario. sol $TERM = new array("小汉", " Frío severo ", " Comienzo de la primavera ", " Lluvia ", " Jingzhe ", " Equinoccio ", " Qingming ", " Lluvia de granos ", " Changxia ", " Xiaoman ", " "Gana", "Solsticio de verano", "Pequeño calor").
//Definir días festivos lunares
calendar . lftv = new array(" 0101 *Festival de Primavera", "0115 Festival de los Faroles", "0505 Festival del Bote del Dragón", "0707 San Valentín chino Día", "0715 Festival del Medio Otoño", "0866.
//Definir días festivos del calendario gregoriano
Calendar. sftv = new array ("0101 *Día de Año Nuevo", " 0214 Día de San Valentín", "0308 "Día de la Mujer", "0312 Día del Árbol", "0315 Día de los Derechos del Consumidor", "0448. "0504 Día de la Juventud", "0512 Día de la Enfermera", "0601 Día del Niño", "0929 Wu Xiao's Cumpleaños", "Conmemoración 0701", "Día del regreso de Hong Kong al Partido", "Día del Ejército 0801", "Día del Padre 0808", "Cumpleaños de Confucio 0928", "Día Nacional 1001*", "Día de la Tercera Edad 1006" , "1024 Día de las Naciones Unidas", "112 Cumpleaños de Sun Yat-sen", "12 de diciembre de 1998".
//Definir el objeto de fecha lunar
/*
Complete la definición del objeto de tipo fecha lunar.
Calcule el calendario lunar y devuelva el objeto de fecha lunar pasando la fecha
Las propiedades de este objeto son. . año . mes día . islap . año cyl . día moncyl
* /
Función FechaLunar(objDate) {
Variable =0, temp=0
var fecha base = nueva fecha (1900, 0, 31)
var offset =(objDate-baseDate)/86400000
this . fecha obj = fecha obj;
this.dayCyl = offset + 40
this.monCyl = 14
for(I = 1900;i<2050&&offset>0;i++ ) {
temp = this .lyeardays(I);
Offset-=temperatura
this.monCyl += 12
}
if(offset & lt; 0) {
offset+= temp;
I-;
this.monCyl -= 12
}
Este año= I
este.añoCyl = i-1864
Salto = este.leapMonth(i) // ¿Cuál es el mes bisiesto?
this.isLeap = false
for(I = 1;i<13.
& ampoffset & gt0;i++) {
//Mes bisiesto
if(leap & gt;0 & amp& ampI = =(leap+1)& amp;& ampthis.isLeap = =false){
-I;
this.isLeap = true
temp = estos días bisiestos (este año);
} En caso contrario {
temp = this.monthDays(this.year, I);
}
//Menciona el mes bisiesto
si(este . es salto = = verdadero && ampi==(salto+1))
this.isLeap = false
Compensación-=temperatura
if(this.isLeap == false)
this.monCyl++
}
if(offset == 0 && ampleap & gt0 & amp& ampi==salto+1)
if (this.isLeap){
this.isLeap = false
}else{ p>
this.isLeap = true
-i;
-this moncyl;
}
if(desplazamiento <0) {
compensación+= temp;-i;
-este .moncyl;
}
este mes= i
este.día = desplazamiento + 1
}
fecha prototipo lunar . información lunar = nueva matriz(
0x04bd8, 0x04ae0, 0570, 0x054d5 , 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,
0x04ae0, 05b6, 04d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0da2, 0x095b0, 0x14977,
0x04970, 04b0 , 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,
0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,
0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0950, 0x0b557,
0x06ca0, 0x0b550, 0x15355, 4da0, 05d 0, 0x14573, 0x052d0, 09a8, 0x0e950, 0x06aa0,
0ea6, 0b50, 0x04b60, 0ae4, 0570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,
0x096d0, 0x04dd5, 0x04ad0, 04d0, d4, 0x0d250, 0x0d558, 0x0b540, 0x0b5a0, 0x195a6,
0x095b0, 0x049b0, 0974, 04b0, 0x0b27a, 0x06a50, 0x06d40, 0f
46, 0b60, 0x09570,
0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0b60, 0x096d5, 0x092e0,
0x0c960, 0x0d954, 0x 0d4a0, 0x0da50, 0x07552 , 0x056a0, 0bb7, 0x025d0, 0x092d0, 0x0cab5,
0950, 0x0b4a0, 0x 0ba 4, 0d50, 0x055d9, 0x04ba0, 05b0, 0x15176, 0x052b0,
0x07954, 0x06aa0 , 0d50, 0x05b52, 0x04b60, 06e6, 04e0, 0x0d260, 0x0ea65, 0x0d530,
0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 04d0, d0b6, 0x0d250, 0 x0d520, 0x0dd45,
0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0577, 04b0, 0a50, 0x1b255, 0x06d20, 0da0)
Fecha del calendario lunar. prototipo. animales = new array("rata", "buey", "tigre", "conejo", "dragón", "serpiente", "caballo", "oveja", "mono", "pollo", "perro", " Cerdo");
fecha lunar. prototipo. gan = nueva matriz(" A ", " B ", " C ", " D ", " E ", " Ji ", " G ", " Xin", "Ren", "Gui");
Fecha del calendario lunar. prototipo. Recta = Nueva Formación ("Zi", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "Tú", "Xu", " océano").
//= = = =Devuelve el número total de días del año y del calendario lunar.
prototipo de fecha lunar. lyeardays = function(y){
//alert("y = " + y)
var i, sum = 348.
for(I = 0x 8000; i>0x8i>& gt= 1)sum+=(this . información lunar[y-1900]&i)? 1: 0
return(sum + this.leapDays(y))
}
//= = = =Devuelve el número de días del salto mes del año y en el calendario lunar.
fecha prototipo lunar. días bisiestos = función(y){
if(this.leapMonth(y))
return((this. información lunar). [y-1900]&0x10000)? 30: 29)
De lo contrario, regresar (0)
}
//= = =Volver al calendario lunar ¿Qué mes del año Y es 1-12? Si no hay un año bisiesto, se devuelve 0.
fecha lunar prototipo . mes bisiesto = función(y){
retorno(esta . información lunar[y-1900]&0xf)
}
//= = = =Devuelve el número total de días en M meses del año calendario lunar Y.
fecha prototipo lunar . mes días = función(y, m) {
return((this . información lunar[y-1900]&(0x 10000> & gtm) )? 30: 29 )
}
//= = = Pase el desplazamiento para regresar a la rama principal, 0 = Jiazi.
fecha lunar prototipo. cíclico = función(){
//var num = this objdate. num = this . año-19036;
Retorno (this. Gan[num%10]+this.Chi[number%12])
}
/**Devuelve el mes en un día a la descripción china...*/
fecha lunar prototipo China date = function(){
Var nStr1 = new. array ('día', 'uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve', 'diez' '); p>
Var nStr2 = nueva matriz ('temprano', 'diez', '20', '30', ''
var meslunar = este.mes
var día lunar = este.día
var s;
if(mes lunar>10){ s = ' diez '+nstr 1[calendario lunar- 10]} else { s = nstr 1[Calendario lunar]} s+=' mes '
Cambiar (día lunar) {
Caso 10: s += 'Décimo día';
Caso 20: s += 'veinte'; break;
Caso 30: s += 'treinta';
Valor predeterminado: s+= nstr 2[math . piso(día lunar/10)]; s+= nstr 1[día lunar % 10];
}
Orden de devolución
}
fecha lunar prototipo . print = function(){
var cl = ' & ltfont color = " verde " STYLE = " font-size:9pt;" & gtCalendario lunar:'; p>
//Calendario lunar BB'+(CLD [d]. "Israp", Leap':'') +cld[d]. lMes+'mes'+cld[d]. un día.
vartt = this . cyclo()+' año '+this . fecha de China();
return(cl+TT+' & lt;/font & gt;');
}
//Hereda el componente del objeto de fecha para implementar el algoritmo de fecha lunar y el algoritmo para obtener vacaciones.
fecha prototipo. getdate lunar = function(){
var d = nueva fecha(this.getFullYear(), this.getMonth(), this.getDate(), 0 , 0, 0);
Devuelve nueva fecha lunar(d);
};
fecha prototipo . /p>
var fecha lunar = this . getdate lunar();
fecha de retorno print();
};
fecha. prototipo . festival print = function(){
var objDate = new Date(this . obtener año completo(), this.getMonth(), this.getDate(), 0, 0, 0);
var objDateLunar = this. getdate lunar();
var iYear = obj date();
var iMonth = obj date. ;
var iDate = fecha obj. getdate();
var sTermInfo =nueva matriz
(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 solarTerm = calendario . solarTerm;
var lFtv = Calendar.lFtv
var sFtv = Calendar.sFtv
var lDPOS = nueva matriz(3)
var festival= ' ', solarTerms= ' ', solarFestival= ' ', lunarFestival= ' ', tmp1, tmp2
//Año Nuevo Lunar
Para (estoy en lFtv)
if(lFtv[i].match(/^(\d{2})(.{2}) ([ \s\*])(. +)$/)) {
tmp1=Número(RegExp.$1)-objDateLunar.mes
tmp2=Número(RegExp.$2)-objDateLunar.día
if(tmp 1 = = 0 & &tmp2==0) lunarFestival=RegExp. $4
}
//Festival Nacional del Calendario
Para (estoy en sFtv)
if(sFtv[i].match ( /^(\d{2})(\d{2})([\s\*])(.+)$/)){
tmp1=Número(RegExp.$1)- (iMes+1)
tmp2=Número(RegExp.
$2)-iDate
if(tmp 1 = = 0 & &tmp2==0) solarFestival = RegExp. $4
}
//Términos
tmp1 =Nueva fecha((31556925974.7 *(iYear-1900)+sTermInfo[iMonth * 2+1]* 60000 )+Fecha UTC(1900, 0, 6, 2, 5))
tmp2 = tmp1.getUTCDate()
if(tmp 2 = = iDate)solarTerms = solarTerm[ iMonth * 2+1]
tmp1 = nueva fecha ((31556925974.7 *(iYear-1900)+sTermInfo[iMonth * 2]* 60000)+date.UTC(1900, 0, 6, 2, 5 ))
tmp2= tmp1.getUTCDate()
if(tmp 2 = = iDate)solarTerms = solarTerm[iMonth * 2]
if(solarTerms = = ' ' & amp; & ampsolarFestival = = ' ' & amp& amplunarFestival == ' ')
festival = "";
Otro
festival = ' & ltbr & gt& ltb & gtHoy es:'+término solar+' '+término solar+' '+festival lunar+' ';
var cl = ' & ltfont color = " # ff 33 ff " STYLE = " font-size:9pt;"& gt;
return(cl+festival+' & lt;/font & gt;');
};
La modificación de la función calendar.js reescribe la función Calendar.dayMouseOver.
calendario . día pasa el mouse sobre = function(ev){
var El = getelement(ev);
if (Calendar.isRelated(el, ev) || Calendario.|| el.disabled) {
Devuelve falso
}
if (el.ttip) {
if (el.ttip.substr(0, 1)= " _ " {
// -
El . ttip = El . caldate . print(El . calendar . ttdate format)+El . ttip . substr(1);
//Agregar impresión del calendario lunar..
El ttip = El ttip+" <br>;+El. . caldate . datelunar print();
//Agregar para imprimir todos los días festivos definidos por el calendario.
El .ttip = El .ttip+El .caldate print();
}
El calendario. ;
}
if (el.navtype!= 300) {
Calendar.addClass(el, " hola lite ");
if (el.caldate) {
calendar . addclass(El . nodo principal, "rowhilite");
Devolver Calendar.stopEvent(ev
Comparar números.