Red de conocimientos turísticos - Lugares de interés turístico - ¿Cómo celebrar el Festival Lunar en Java?

¿Cómo celebrar el Festival Lunar en Java?

clase pública Luna

{

Año int privado;

Mes int privado;

Día int privado;

Salto booleano privado;

Cadena estática final ChineseNumber[] =

{"uno","dos","tres","cuatro","cinco","seis" ", "siete", "ocho", "nueve", "diez", "once", "doce"};

Cadena estática final Big_Or_Small[] =

{" grande" "pequeño" "grande" "pequeño" "grande" "grande" "pequeño" "grande" "grande" "pequeño" "grande" "grande" "pequeño" "grande" "pequeño" "grande" };

Cadena privada[] LunarHolDayName =

{ "Pequeño frío", "Gran frío", "Comienzo de la primavera", "Lluvia", "Jingzhe", "Equinoccio de primavera", " Qingming" ", "Lluvia de granos", "Changxia", "Xiaoman", "Manzi", "Solsticio de verano",

"Pequeño calor", "Gran calor", "Comienzo del otoño", " Claro", "Rocío blanco" y "Equinoccio de otoño", "Rocío frío", "primera helada", "comienzo del invierno", "nieve ligera", "nieve intensa",

"Solsticio de invierno"};

Formato de fecha simple estático Formato de fecha chino = nuevo formato de fecha simple (

"yyyy MM DD Day");

Final estático largo[] lunarInfo = nuevo largo[]

{ 0x04bd8, 0x04ae0, 0570, 0x054d5 0x0d260 0x14977, 0x04970, 04b0 ,

0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 9570, 0x052f2,

0x04970, 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60,

0x186e3, 0x092e0, 0x1c8d7, 0x0c950, 0x0d4a0, 0x1d8a6, x0b550,

0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0950, 0x0b557,

0x06ca0, 0x0b550, 0x15355, 0x04da0, 05d0, 0x14573, 0x052d0,

09a8, 0x0e950, 0x06aa0, 0ea6, 0b50, 0x04b60, 0ae4,

0570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0 x096d0,

0x04dd5, 0x04ad0, 04d0, 0x0d4d4, 0x0d250, 0x0d558, 0,

0x0b5a0, 0x195a6, 0x095b0, 0x049b0, 0974, 04b0, 0x0b27a,

0x06a 50.0x06d40, 0f46, 0b60, 0x09570, 0x04af5, 0x04970,

0x064b0. , 0x074a3, 0x0ea50, 0x06b58, 0x055c0, 0b60, 0x096d5,

0x092e0, 0x0c960, 0x0d954 , 0x0d4a0, 0x0da50, 0x07552 , 0x056a0,

0bb7, 0x025d0, 0x092d0, 0x0cab5, 0, 0x0b4a0, 0x0baa4,

0d50, 0x0

55d9, 0x04ba0, 05b0, 0x15176, 0x052b0, 0930,

0x07954, 0x06aa0, 0d50, 0x05b52, 0x04b60, 06e6, 04e0,

0x0d260, 5, 0x0d530, 0x05aa0, 0x076a3 , 0x096d0, 0x04bd7,

0x04ad0, 04d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45, 0x0b5a0,

0x056d0, 0x055b2, 0x049b0, 0577, 4b0, 0a50, 0x1 b255,

0x06d20, 0da 0};

//= = = = Devuelve el número total de días en el año y del calendario lunar.

final privado estático int añoDías(int y)

{

int i, suma = 348

for(I = 0x 8000 ;i>0x8i>>= 1)

{

if((información lunar[y-1900]&i)!= 0)

suma+= 1;

}

return(suma+días bisiestos(y));

}

//= = = = =Devuelve el número de días en el mes bisiesto del año Y en el calendario lunar.

Días bisiestos intermedios estáticos privados finales(int y)

{

if (leapMonth(y)!= 0)

{

if((información lunar[y-1900]&0x10000)!= 0)

Regresar 30;

Otros

Regresar 29;

}

Otro

Devuelve 0

}

//= = = = = Devuelve qué mes del año calendario lunar Y es 1-12, o devuelve 0 si no hay un año bisiesto.

final privado estático int jumpMonth(int y)

{

return(int)(información lunar[y-1900]&0xf);

}

//= = = = =Devuelve el número total de días en M meses en el año lunar Y.

días del mes int estático privado final (int y, int m)

{

if((información lunar[y-1900]&(0x 10000 & gt;& gtm)) == 0)

Devuelve 29;

Otro

Devuelve 30;

}

//= = = = =Devuelve los doce signos del zodíaco del año Y en el calendario lunar.

Cadena pública final animalesAño()

{

Cadena final[] Animales = nueva cadena[]

{" Rata", "buey", "tigre", "conejo", "dragón", "serpiente", "caballo", "oveja", "mono", "pollo", "perro", "cerdo"};

Regreso animal [(4to año)% 12];

}

//= = = = = Regreso a la sucursal principal con el siguiente mes y día compensado, 0= Jiazi.

Cadena estática privada final cyclalm(int num)

{

Cadena final[] Gan = nueva cadena[]

{" A", "B", "C", "D", "E", "Ji", "Ji", "Xin", "Ren", "Ghost"};

Cadena final [ ] Zhi = nueva cadena []

{"子", "Chou", "Yin", "Mao", "Chen", "Si", "Wu", "Wei" ", "Shen ", "Tú", "Xu", "海"};

return(Gan[num % 10]+Zhi[num % 12]);

}

//= = = = =El desplazamiento entrante regresa a la rama principal, 0=Jiazi.

Bucle de cadena pública final()

{

int num = año-19036;

return(cyclalm(num ) );

}

/** */

/**

*El calendario lunar corresponde a M, mes y D en el año Y. añoCyl3: ¿Cuál es la diferencia entre el año lunar y 1864? moncyl 4:1900 65438 + el número de meses bisiestos desde el 31 de octubre.

* dayCyl5: Días diferentes de 1900 65438+31 de octubre, ¿suma 40?

*

* @param cal

* @return

*/

Calendario lunar público (calendario cal )

{

// cal.add(cal.get(Calendario.mes-día),

@SuppressWarnings("No utilizado); ")

int añoCyl, monCyl, díaCyl

int mes bisiesto = 0;

Fecha baseDate = null

Probar

{

Basedate =Formato de fecha chino. parse(" 1900 65438+31 de octubre ");

}

Catch (ParseException e)

{

e . ); //Para cambiar el cuerpo de la declaración catch, use

//Opciones|Plantilla de archivo.

}

//Encuentra el número de días que son diferentes de 1900 65438+31 de octubre.

int offset = (int) ((cal.getTime().getTime()-fecha base .getTime())/86400000 l);

dayCyl = offset + 40;

monCyl = 14;

//Reste el número de días de cada año lunar del desplazamiento.

//Calcula qué día del calendario lunar es hoy.

// iEl resultado final es el año del calendario lunar.

// el desplazamiento es un día del año.

int iAño, días del año = 0

for(iAño = 1900; iAño & lt2050 & amp& ampoffset & gt0;iAño++)

{

días del año = días del año (iAño);

compensación-= días del año;

monCyl+= 12;

}

if(compensación & lt; 0)

{

compensación+= días del año;

iAño-;

monCyl-= 12;

}

//Año Lunar

año = iAño

año cyl = iAño-1864;

mes bisiesto = mes bisiesto(iAño); //En qué mes, 1-12.

leap = false

//Reste los días de cada mes (calendario lunar) del día compensado en el año uno por uno para encontrar los días de este mes.

int iMonth, días del mes = 0

for(iMonth = 1;iMonth & lt13. & ampoffset & gt0;iMonth++)

{

//Mes bisiesto

if(mes bisiesto & gt; 0 & amp& ampiMonth = =(mes bisiesto+1); & amp! bisiesto)

{

-iMes;

salto = true

díasDeMes = días bisiestos(año);

}

Otros

daysOfMonth = MonthDays(year,iMonth);

offset-= días del mes;

//Abre el mes bisiesto

if ( salto& amp& ampiMonth == (leapMonth + 1))

salto = false

if (!leap)

moncyl++;

}

//Cuando el desplazamiento es 0 y el mes recién calculado es bisiesto, es necesario realizar una corrección.

if(offset == 0 & ampleapMonth & gt0 & amp& ampiMonth == jumpMonth + 1)

{

If (saltar)

p>

{

salto = false

}

Otro

{

salto = true

-iMonth;

-monCyl;

}

}

//Si el desplazamiento es menor que 0, también debe corregirse.

if(compensación & lt; 0)

{

compensación+= días del mes;

-iMes;

-monCyl;

}

mes = iMes

día=offset+1;

}

Cadena estática pública getChinaDayString(int día)

{

Cadena chinaTen[] =

{"日","十"," "Veinte", "Treinta"};

int n = día % 10 == 0? 9: día % 10-1;

if(día & gt; 30)

Devolver "";

if (día == 10)

Devolver "décimo día"

Otros

Devolver chinoDiez; [día/10]+chineseNumber[n];

}

Cadena pública toString()

{

return/* cíclico ()+" Año "+*/(Salto? "Salto": ")

+Número chino[mes-1]+" mes "+getchina daystring(día) ;

}

Cadena pública numeric_md()

{//Devuelve la fecha lunar en números arábigos

String temp_. temp_mon

temp_mon = mes & lt10 ?"0"+mes:"+mes;

temp_day = día <10?"0"+día:"+ día;

Devuelve temp_mon+temp_day;

}

Cadena pública get_month()

{//Devuelve el mes lunar calendario

Devuelve número chino[mes-1];

}

Cadena pública get_date()

{//Devuelve el día de el calendario lunar

Devuelve getchina daystring(day);

}

Cadena pública get_Big_Or_Small()

{//Devuelve el. tamaño del mes

Devuelve Grande _ O _ Pequeño[mes-1]

}

}