¿Cómo celebrar el Festival Lunar en Java?
{
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, p>
0570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0, 0 x096d0, p>
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, p>
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); p>
}
//= = = = =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"}; p>
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)
{ p >
-iMes;
salto = true
díasDeMes = días bisiestos(año);
}
Otros p >
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]
}
}