Red de conocimiento informático - Material del sitio web - ¡Cómo calcular los términos solares (implementación de programación java) cuando se conoce el calendario solar (20120204)!

¡Cómo calcular los términos solares (implementación de programación java) cuando se conoce el calendario solar (20120204)!

Te paso el código, extraído del calendario perpetuo online.

importar java.text.SimpleDateFormat;

importar java.util.Calendar

importar java.util.Date

público; prueba de clase {

long[] sTermInfo = new long[] { 0, 21208, 42467, 63836, 85337, 107014,

128867, 150921, 173149, 195551, 218072, 240693 , 263343, 285989,

308563, 331033, 353350, 375494, 397447, 419210, 440795, 462224,

483532, 504758 }; solarTerm = new String[] { "Pequeño frío", "Gran frío", "Comienzo de la primavera", "Lluvia", "Jingzhe", "Equinoccio de primavera",

"Qingming", "Lluvia de granos ", "Comienzo del verano", "Xiaoman", "awnzhong", "solsticio de verano", "pequeño calor", "gran calor", "principio de otoño", "final del verano", "rocío blanco",

"equinoccio de otoño", "rocío frío", "caída de heladas", "comienzo del invierno", "nieve ligera", "nieve intensa", "solsticio de invierno" };

público static void main(String[] args) lanza una excepción {

Test t = new Test ();

String strDate = "20120204";

SimpleDateFormat sdf = new SimpleDateFormat("aaaaMMdd");

Calendario clendar = Calendar.getInstance() ;

clendar.setTime(sdf.parse(strDate));

int año = clendar.get(Calendario.AÑO);

int mes = clendar .get(Calendario.MES);

int día = clendar.get(Calendario.FECHA) ;

// Términos

int tmp1 = t.sTerm (año, mes * 2);

int tmp2 = t.sTerm (año, mes * 2 1);

String solarTerms = null;

if (día == tmp1) {

solarTerms = t.solarTerm[mes * 2];

} else if (día == tmp2) {

solarTerms = t.solarTerm[mes * 2 1]

} else {

solarTerms = "";

}

Sistema.println

(strDate "Los términos solares son: " solarTerms);

System.out.println("Las fechas de todos los términos solares son:

for (mes = 0; mes lt; 12; mes ) {

clendar.set(Calendario.MONDAY, mes);

tmp1 = t.sTerm(año, mes * 2);

tmp2 = t.sTerm(año, mes * 2 1);

clendar.set(Calendar.DATE, tmp1);

System.out.println(t. solarTerm[mes * 2] ":"

sdf.format(clendar.getTime()));

clendar.set(Calendar.DATE, tmp2);

System.out.println(t.solarTerm[mes * 2 1] ":"

sdf.format(clendar.getTime()));

}

}

public int sTerm(int y, int n) lanza una excepción {

if (y == 2009 amp; amp; n == 2) {

sTermInfo[n] = 43467;

}

Calendario calendario = Calendar.getInstance();

calendario.set(1900, 0, 6 , 2, 5);

Fecha _1900 = calendar.getTime();

long milis = (largo) ((31556925974.7 * (y - 1900) sTermInfo[n ] * 60000 ) _1900

.getTime());

calendar.setTimeInMillis(millis);

return calendar.get(Calendar.DATE);

}

}