Necesitamos urgentemente el "Código JAVA del Calendario Lunar"
(Simplemente copie el código en una nueva página web en blanco, no mire la demostración, el código en la demostración es incorrecto.
)
El código es el siguiente:
& ltLenguaje script = JavaScript & gt
& lt! -
/****************************************** ************************************
Información de la fecha
************************************************ *****************************/
var lunarInfo =nueva matriz(
0x04bd8, 0x04ae0, 0570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,
0x04ae0, 05b6, 04d0, 0x0d250, x1d255, 0x0b540, 0x0d6a0, 0da2, 0x095b0, 0x14977, < /p >
0x04970, 04b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,
0x06566, 0x0d4a0, 0x0ea50, x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7 , 0x0c950 ,
0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0950, 0x0b557,
0x06ca0, 50, 0x15355, 0x04da0, 0 5d0, 0x14573, 0x052d0, 09a8 0x0e950, 0x0d4d4, 0x0d250 0x0d558 x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0b60, 0x096d5, 0,
0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0bb7, 0x025d0, 0x092d0, 0x0ca b5,
0950, 0x0b4a0 , 0x 0ba 4, 0d50, 0x055d9, 0x04ba0, 05b0, 0x15176, 0x052b0, 0930,
0x07954, 0x06aa0, 0d50, 0x05b52, 0x04b60 , 06e6, 04e0, 0x0d260, 0x0ea6 5,0x0d530,
0x05aa0, 0x076a3, 0x096d0, 0x04bd7, 0x04ad0, 04d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,
0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0577, 0 4b0, 0a50, 0x1b255, 0x06d20, 0da0)
var mes solar
= nueva Matriz(31, 28, 31, 30, 31, 30, 31, 30, 31, 30, 31);
Var Gan = nueva matriz (" A ", " B ", " C); "," D ", " E ", "ji", "庚", "信", "人", "鬼");
Var Zhi = Nueva Formación ("子", "Chou " ", "Yin", "Mao", "Chen", "Si", "Wu", "Wei", "Shen", "Tú", "Xu", "Hai");
Var Animales = new array("Rata", "Buey", "Tigre", "Conejo", "Dragón", "Serpiente", "Caballo", "Oveja", "Mono", "Pollo", "Perro" , "Cerdo");
Var solarTerm = Nueva Formación ("Pequeño Frío", "Frío Severo", "Comienzo de la Primavera", "Lluvia", "Jingzhe", "Equinoccio de Primavera", "Qingming ", "Lluvia de granos", "Changxia", "Xiaoman", "Grano", "Solsticio de verano", "Pequeño calor",.
var sTermInfo = new Array(0, 21208, 42467, 63836, 85337, 107014, 128867 , 150921, 173149, 1955565438
Var nStr1 = nueva matriz ('día', 'uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve', 'diez').
Var nStr2 = nueva matriz ('temprano', 'diez', '20', '30', '')
var mesNombre = new array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", " Septiembre ", "Octubre", "Noviembre", "Diciembre");
//Fiestas nacionales* se refiere a días festivos.
var sFtv = new array(
"0101*Año Nuevo",
"0214 Día de San Valentín",
"0308 Día de la Mujer",
"0312 Día del Árbol", p>
"0315 Día de los Derechos del Consumidor",
"0317 San Patricio",
"0401 Día de los Inocentes",
"0501 Trabajo Day",
"0504 Día de la Juventud",
"0512 Día de la Enfermera",
"0512 Cumpleaños de Yin",
" 0601 Día del Niño",
"0614 Día de la Bandera",
"0701 Conmemoración del regreso de Hong Kong al Partido y Día de la Fundación",
"0703 Huang Yan Cumpleaños en línea",
"0718 Cumpleaños de Top",
"0801 Día del Ejército",
"0808 Día del padre",
"0909 Salón Conmemorativo de la Muerte de Mao Zedong",
"0910 Día del Maestro",
"0928 Cumpleaños de Confucio",
"1001*Día Nacional",
"1006 Día de las Personas Mayores",
"1024 Día de las Naciones Unidas",
"1111 Día de los Veteranos/Memorial",
"1112 Conmemoración del cumpleaños de Sun Yat-sen",
"Conmemoración del regreso de Macao 1220",
"Navidad 1225",
"Conmemoración del cumpleaños 1226 de Mao Zedong")
//Festival Lunar* indica días festivos.
var lFtv = new array(
"0101*Festival de Primavera",
"0115 Festival de los Faroles",
"0328mi cumpleaños ",
"0505 Festival del Bote del Dragón",
"0707 Día de San Valentín chino",
"0715 Festival del Medio Otoño",
"0815 Festival del Medio Otoño",
"0909 Doble Noveno Festival",
"1208 Festival de Laba",
"1224 Pequeño Año Nuevo" ,
" 0100*Nochevieja")
//¿Qué día de la semana es en un mes?
var wFtv = new array(
"0131 Día de Martin Luther King",
"0231 Día del Presidente",
"0520 Día de la Madre",
"0530 Día de las Fuerzas Armadas",
"0531 Día de la Victoria",
"0716 Día de la Cooperación",
"0730 Semana de las Naciones Esclavizadas",
"0811 Feriado Ciudadano",
"0911 Feriado del Trabajo",
"1021 Día de la Raza",
"1144 Acción de Gracias")
/****************************** ***** ***************************************** p>
Cálculo de fecha
************************************ ***** ************************************/
/ /= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Devuelve el número total de días del año calendario lunar Y.
Tiempo de retardo de función (y) {
var i, sum = 348
for(I = 0x 8000;i>0x8i>>= 1 )sum+=(información lunar [y-1900]&i)? 1: 0
retorno(suma+Días bisiestos(y))
}
//= = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Devuelve el número de días del mes bisiesto del año y en el calendario lunar.
Función días bisiestos(y) {
if(mes bisiesto(y))return((info lunar[y-1900]&0x10000)?30:29) p >
De lo contrario, devuelve (0)
}
//= = = = = = = = = = = = = = = = = = = = = = = = = = = = = Devuelve el mes de Y en el año bisiesto del calendario lunar, es decir, 1-12, o 0 si no hay año bisiesto.
Función messalto(y) {
retorno(información lunar[y-1900]&0xf)
}
/ / = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = Devuelve el número total de días en M meses del año y en el calendario lunar .
Función número de días en el mes (y, m) {
return((información lunar[y-1900]&(0x 10000>>m))? 30: 29 )
}
//= = = = = = = = = = = = = = = = = = = = = = = = = = = = Calcular el calendario lunar, pase el objeto de fecha y devuelva el objeto de fecha lunar.
//Los atributos de este objeto son .año mes día islap .
Función Lunar(objDate) {
Variable I, salto=0, temp=0
var fecha base = nueva fecha (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-=temperatura
this.monCyl += 12 p>
}
if(desplazamiento & lt; 0) {
desplazamiento+= temp;
I- ;
this.monCyl -= 12
}
Este año=i
this.yearCyl = i-1864
Salto = messalto( i) //¿Qué mes 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 = truetemp = días bisiestos(este . año);}
Otro
{ temp = MonthDays( este año, i);}
//Mencione el mes bisiesto
if(este. es salto = = verdadero &&I = =(salto+1))esto. es salto = false
Compensación-=temperatura
si(este. es salto == false)this moncyl++
}
. if( offset = = 0 & ampleap & gt0 & ampi==leap+1)
if (this.isLeap)
{ this.isLeap = false}
Otro
{ this.isLeap = true-i;-this .
if(offset & lt;0){ offset+= temp;-i; .moncyl;}
Este mes=yo
este.día = compensación + 1
}
//= = = = = = = = = = = = = = = = = = = = = = = = = = = = El número de días en un mes m+1 en el año calendario y.
Función solarDays(y, m) {
Si (m==1)
return((y % 4 == 0)&& amp (y%100!= 0) || (y%400 == 0))? 29: 28)
Otros
return(solarMonth[m])
}
//= = = = = = = = = = = = = = = = = = = = = = = = = = = Pase el desplazamiento para regresar a la rama principal, 0 = Jiazi.
Función de bucle (cantidad){
retorno(gan [num % 10] + sabiduría [num% 12])
}
//= = = = = = = = = = = = = = = = = = = = = = = Propiedades del calendario
Función calElement(año, mes, día, semana, año, mes, día, mes, día, año, año, mes, día){
this.isToday = false
//Calendario Nacional
this.sYear = sAño
este . sm onth = sm onth;
este.sDía = sDía
esta.semana =semana;
/ /lunar calendario
este .l oído = ly oído;
este.lMes = lMes
este.lDía = lDía
este es. salto = es salto;
//Rama principal
this cy ear = cy ear;
this.cMonth = cMonth
. this.cDay = cDay
this .color = "";
this . festival lunar = ""; // Año nuevo chino
this . ""; //Festival del Calendario Nacional
this . solarterms = ""; //Términos Solares
}
//= = = = El primer día. de un año determinado ¿Cuántos días hay en n términos solares (a partir de 0 Xiaohan)?
Función sTerm(y, n) {
var offDate = nueva fecha ((31556925974.7 *(y-1900)+sTermInfo[n]* 60000)+date.UTC(1900 , 0, 6, 2, 5))
return(offDate.getUTCDate())
}
//= = = = = = = = = = = = = = = = = = = = Devuelve un objeto de calendario (y año, m+1 mes).
Calendario de funciones (y, m) {
var sDObj, lDObj, lY, lM, lD=1, lL, lX=0, tmp1, tmp2
var lDPOS = nueva matriz(3)
var n = 0
var firstLM = 0
SDObj = nueva Fecha(y, m, 1) / /El día del mes actual.
This.length = solarDays(y, m) //El número de días del mes actual en el calendario nacional.
this . firstweek = SD obj . getday()//¿Qué día es el 1 en el calendario nacional?
for(var I = 0;i<this.length;i++) {
if(lD>lX) {
SDObj = nueva Fecha (y, m , i+1) //La fecha del mes actual.
LDObj = new Lunar(sDObj) //Calendario lunar
LY = lDObj.year //Año Nuevo Lunar
LM = lDObj.month //Lunar mes calendario
LD = lDObj.day //Día del calendario lunar
LL = lDObj.isLeap //¿Es el calendario lunar un mes bisiesto?
lX = lL? Día bisiesto (ly): día del mes (ly, lm) //El último día del mes lunar.
if(n==0) firstLM = lM
lDPOS[n++] = i-lD+1
}
/ /Año, mes, día, semana,
//lAño, lMes, lDía, esSalto,
//cAño, cMes, cDía
esto[i ] = new calElement(y, m+1, i+1, nstr 1[(I+esta . primera semana)% 7),
lY, lM, lD++, lL,
circular(ldobj . año cyl), circular(ldobj . moncyl), circular(ldobj . día cyl++))
if ((i+this.firstweek)% 7 == 0) this [I ]. color =' rojo'/color del domingo
if ((i+this.firstweek)% 14 == 13)this[i]. Dos días libres el fin de semana.
}
//Términos
tmp1=sTérmino(y, m*2)-1
tmp2=sTérmino(y, m*2+1)-1
Este [tmp1]. solarTerms = solarTerm[m*2]
Este[tmp2]. solarTerms = solarTerm[m * 2+1]
Si (m = = 3) este [tmp1]. color = 'rojo'/color Qingming.
//Festival Nacional del Calendario
Para (estoy en sFtv)
if(sFtv[i].match(/^(\d{2} ) (\d{2})([\s\*])(.+)$/))
if(Número(RegExp.$1)==(m+1)) { p >
Este [número(RegExp.$2)-1].solarFestival += RegExp. $4 + ' '
if(RegExp.$3=='* ')this[número(RegExp.$2)-1].color = 'rojo '
}
//Vacaciones mensuales y semanales
Para (estoy en wFtv)
if(wFtv[i].match(/^(\d{2})( \ d)(\d)([\s\*])(.+)$/))
if(Número(RegExp.$1)==(m+1)) {
tmp1=Número(RegExp.$2)
tmp2=Número(RegExp.$3)
Esta es la primera semana. tmp2)? 7:0)+7 *(tmp 1-1)+tmp 2-esta primera semana]. solarFestival += RegExp. $5 + ' '
}
//Año Nuevo Lunar
Para (estoy en lFtv)
if(lFtv[i ]. coincidencia(/^(\d{2})(.{2})([\s\*])(.+)$/)) {
tmp1=Número(RegExp.
$ 1)-Primer LM
if(tmp 1 = =-11)tmp 1 = 1
if(tmp 1 & gt; = 0 & amp& amptmp 1 & lt ;n ) {
tmp 2 = lDPOS[tmp 1]+Número(RegExp.$2) -1
if(tmp 2 & gt;= 0 & amp& amptmp2 & ltthis . longitud) }
Este [tmp2]. festivallunar += RegExp. $4 + ' '
if(RegExp.$3=='* ')este[tmp2]. color = 'rojo '
}
}
}
//Viernes Negro
if(( esta primera semana+12)% 7 = = 5)
Esto[12]. solarFestival += 'Black Friday'
//Hoy
if(y = = tY &&m==tM)esto[tD-1]. isToday = true
}
//= = = = = = = = = = = = Fecha china
Función cDay(d){ p >
var s;
switch(d) {
Caso 10:
S = 'Día 10 de descanso';
Caso 20:
S = 'veinte';
descanso
Caso 30:
S = 'Treinta'; '; romper;
break;
Valor predeterminado:
s = nstr 2[math . p>s+= nstr 1[d % 10];
}
Orden de devolución;
}
/ //// /////////////////////////////////////////////////// /////////////////////////////
var cld
Función drawCld(SY, SM ) {
var i, sD, s, size
cld = nuevo calendario(SY, SM);
if(SY>1874.& ampSY & lt1909) yDisplay = 'Guangxu'+((SY-1874) = = 1)? Yuan:SY-1874)
if(SY>1908.&SY<1912) yDisplay = 'Xuantong'+((SY-1908) = = 1)? 'Yuan':SY-1908)
if(SY>1911.
& ampSY & lt1950) yDisplay = 'República de China'+(((SY-1911)= = 1)?'Yuan':SY-1911)
//if(SY & gt;1949) y Show=' * *y China'+((SY-1949) = = 1)? Yuan:SY-1949)
// GZ.innerHTML = yDisplay+'calendario lunar'+ciclo (SY-19036)+'año? '+animal[(SY-4)% 12]+' ';
if(SY>1949) yDisplay = ' '
GZ.innerHTML = yDisplay+'Calendario lunar' + bucle(SY-19036)+'¿Año? '+animal[(SY-4)% 12]+' ';
YMBG.innerHTML = "?+SY+" & lt;BR & gt?"+nombre del mes[SM];
for(I = 0;i<42;i++) {
sObj = eval(' SD '+I);
lObj = eval(' LD '+ I);
sobj . nombre de clase = "";
sD = I-CLD primera semana;
if(sD & gt; - 1 & amp; ampsD & ltCld.length) {//Dentro de la fecha
sobj = sD+1;
if(cld[sD]). = ' todyaColor '; //Color de hoy
sObj.style.color = cld[sD]. //Color del feriado nacional
If(cld[sD ]). ==1) //Muestra el mes lunar
lObj.innerHTML = ' & ltb & gt'+(cld[sD].isLeap?leap ':')+CLD[sD] lMonth+'. Mes '+(días del mes(CLD[SD]).Lyle,CLD.LMONTH) == 29? pequeño':'grande')+'
Else //Mostrar el Año Nuevo Lunar
lObj.innerHTML = cDay(cld[sD]).
s = CLD[SD]. lunarFestival
if(s . length & gt ;0) {// Festival Lunar
if(s . length & gt;6) s = s.substr(0, 4)+'...';
s = s . ' rojo ');
}
Else {//Fiesta Nacional
s = CLD[SD].
if(s . longitud & gt 0) {
tamaño = (s.charCodeAt(0)>0 & amp& amps . charcodeat(0)<128)?8:4; longitud & gt; tamaño+2) s = s.substr(0, tamaño)+'...';
s = s . >}
Else {// 24 términos solares
s = CLD[SD].
solarTerms
if(s . length & gt; 0)s = s . color de fuente(' verde lima '); >
if(s . length & gt; 0)lobj . internalhtml = s
}
Else {//sin fecha
sobj .innerhtml = "";
lobj. > Función cambioLong()
{
Variables y, m, ly, lm, id, im, iy, yangy, yangm, deltm, miny, TT;
CLD. CLD. d 1. índice seleccionado;
CLD. CLD. D2.selectedIndex
yangm = 0; yangy = 0;
TT = verdadero
mientras (tt)
{ p>
yangm = 0; yangy = 0;
cambiar CLD();
for(I = 0;i<42;i++)
{
sD = I-CLD primera semana;
if(sD & gt;-1 & ampsD & ltcld .length)
dentro de {//fecha.
if ((cld[sD]).cld.D2.selectedindex+1)&&(cld[sD].lier==CLD.d1. selectedindex+1900))
{
Yang=CLD. índice seleccionado+1900; Yang=CLD. SM.selectedIndex
TT = falso
Romper
}
}
}
Si (!tt) se abre paso;
push TM(' MD ');
cambiar CLD();
//Alert ( CLD . SY.selectedIndex+" "+CLD .
for(I = 0;i<42;i++)
{
sD = I. -CLD . primera semana;
if(sD>-1&&sD<cld.length)
Dentro de {//fecha
if ((cld[sD] ).cld.D2.selectedindex+1)&&&(cld[sD].Lyle==CLD.d1.selectedindex+1900))
{
Yang=CLD. índice seleccionado+1900; Yang=CLD. SM.selectedIndex
TT = falso
Romper
}
}
}
Descanso;
}
//alert(yangy+" "+yangm);
//CLD. SY.selectedIndex = yangy//-1900;
//push TM(' YU ');
//push TM(' YD ');
CLD.
SM.selectedIndex = yangm
push TM(' MD ');
push TM(' MU ');
}
//cambioLong end
Función changeCld() {
var y, m;
y=CLD. sy.selectedindex+1900;
m=CLD. SM.selectedIndex
drawCld(y, m);
}
Función push TM(K){
Interruptor (K) {
Cuadrícula 'en':
if (CLD. SY.selectedIndex & gt0) CLD. sy.selectedindex-;
Pausa;
Caso "YD":
if (CLD.SY.selectedIndex<149) CLDsy.selectedindex++;
Pausa;
Caso "Gestión":
if (CLD. SM.selectedIndex & gt0) {
CLD. sm .selectedindex-;
}
else {
CLD. sm . índice seleccionado = 11;
if (CLD . SY . índice seleccionado & gt0 ) CLD . sy.selectedindex-;
}
Pausa;
Caso "MD":
if (cld.sm.selectedIndex<11 ) {
CLD. sm .selectedindex++;
}
else {
CLD. sm.selectedindex = 0;
if (CLD.SY.selectedIndex & lt149) CLDsy.selectedindex++;
}
Romper;
Predeterminado:
CLD. sy.selectedindex = tY-1900;
CLD.
SM.selectedIndex = tM
}
cambiar CLD();
}
var Hoy = nueva fecha(); p>
p>
var tY = hoy . obtener año completo();
var tM = hoy getmonth();
var tD = hoy . ();
p>
//////////////////////////////////// ///////////// //////////////////////////////////// p>
var ancho = " 130 ";
var offsetx = 2;
var off sety = 16;
var x = 0;
var y = 0;
var nieve = 0;
var SW = 0;
var CNT = 0;
var dStyle
document.onmousemove = mEvn
//Mostrar información detallada de la fecha
Función mOvr(v) {
var s, feriado;
var sObj = eval(' SD '+v);
var d = sobj . //Año, mes, día, semana,
//lAño, lMes, lDía, esSalto,
//cAño, cMes, cDía
if( sObj.innerHTML!='') {
estilo sobj . cursor = ' s-resize ';
if(cld[d]. solarTerms = = ' ' & amp& ampcld [d]. solarFestival = = ' ' & amp& ampcld[d]. lunarFestival == ' ')
festival = "";
Otro
festival. = ' & ancho de tabla = 100% BORDE = 0 relleno de celda = espaciado de 2 celdas = 0 BGCOLOR = " # CCFFCC " & gt;cld[d]. términos solares + ' ' + cld[d]. solarFestival + ' ' + cld[d].
festival lunar+'</FONT></TD>+
</TR></TABLE>'
s = ' & ltTABLE WIDTH = " 130 " BORDER = 0 celda padding = " 2 " espaciado de celda = 0 BGCOLOR = " # 000066 " >& ltTR & gt& lt"TD & gt" +
& ltAncho de tabla = 100% BORDE = 0 Relleno de celda = 0 Espaciado de celda = 0 >& ltTR & gt& ltTD ALIGN="right " >& ltFONT COLOR = " # ffffff " STYLE = " FONT-size:9pt;"& gt+
Cld[d]. sAño+'año'+cld[d]. sMes+'mes'+cld[d]. sDía+'Día < br & gt Semana'+CLD [d]. Día laborable+'
& ltfont color="violet " >Calendario lunar'+(CLD [d]. islap? Leap':'') +cld[d]. lMes+'mes'+cld[d]. lDía+' día +cld[d]. cAño+'Año'+cld[d]. cMes+'Mes'+cld[d]. cDía+'día
& ltTABLE width = " 672 " align = " right " height = " 259 " bordercolordark = " # cc 9900 " border = " 4 " background = " l 11 . gif " & gt;
& ltcenter>
& ltcenter>
& ltTBODY>
& lt/center>& lt/center & gt;
& ltTR & gt
& ltTD align = middle vAlign = top width = " 170 " height = " 255 " >>p>
& ltdiv align="center " >> p>
& ltcenter& gt
& lttable border = 1 COLSPAN = 2 ancho = " 221 " />
& ltcenter& gt
& ltcenter& gt& ltfont size=2
style="FONT-SIZE: 9pt " >>p>
& lttd width=" 209 "
& ltp align="center " > & ltfont style = " tamaño de fuente: 10,8 pt " color = ROJO & gt.
Hora de la computadora local:
id=Tamaño del reloj=3 align="center " >& lt/FONT & gt;
& ltP & gt& lt! - Zona horaria * indica ajuste automático al horario de verano - /TABLE & gt;
& lt/center & gt;
& lt/div & gt;
& ltdiv align="center " >> p>
& ltcenter& gt
& lttable border= 1 altura = " 1 " ancho = " 16 "
& lttd height="1" width= "255 " >>p>
& lttable width = " 212 " height = " 1 " >& ltcenter& gt
& ltcenter& gt
& ltFONT id=tSave
style="COLOR: rojo; familia de fuentes: fuente Wingdings