给定阳历(20120204),如何计算节气(java编程)!
导入Java . text . simple date format;
导入Java . util . calendar;
导入Java . util . date;
公共类测试{
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 };
string[]solar $ TERM = new string[]{“小寒”、“严寒”、“立春”、“雨”、“惊蛰”、“春分”,
《清明》、《谷雨》、《长夏》、《小满》、《茫中》、《夏至日》、《小夏》、《大夏》、《立秋》、《楚书》、《千年》、
《秋分》、《寒露》、《初霜》、《立冬》、《小雪》、《大雪》、《冬季至日》};
公共静态void main(String[] args)引发异常{
Test t = new Test();
string strDate = " 20120204 ";
SimpleDateFormat SDF = new SimpleDateFormat(" yyyyMMdd ");
calendar clendar = calendar . getinstance();
clendar . settime(SDF . parse(strDate));
int year = clendar.get(Calendar。年份);
int month = clendar.get(Calendar。月);
int day = clendar.get(Calendar。日期);
//节气
int tmp1 = t.sTerm(年,月* 2);
int tmp2 = t.sTerm(年,月* 2+1);
String solarTerms = null
if (day == tmp1) {
solarTerms = t . solarterm[month * 2];
} else if (day == tmp2) {
solarTerms = t . solarterm[month * 2+1];
}否则{
solarTerms =
}
System.out.println(strDate+)的节气是:“+solarTerms);
System.out.println("所有节气的日期为:");
for(month = 0;月份& lt12;月++) {
clendar.set(日历。周一,月);
tmp1 = t.sTerm(年,月* 2);
tmp2 = t.sTerm(年,月* 2+1);
clendar.set(日历。日期,tmp 1);
system . out . println(t . solarterm[month * 2]+":"
+SDF . format(clendar . gettime());
clendar.set(日历。日期,tmp 2);
system . out . println(t . solarterm[month * 2+1]+":"
+SDF . format(clendar . gettime());
}
}
public int sTerm(int y,int n)抛出异常{
如果(y = = 2009 & amp& ampn == 2) {
sTermInfo[n]= 43467;
}
calendar calendar = calendar . getinstance();
calendar.set(1900,0,6,2,5);
date _ 1900 = calendar . gettime();
long millis =(long)((31556925974.7 *(y-1900)+sTermInfo[n]* 60000)+_ 1900
。getTime());
calendar . settimeinmillis(millis);
返回calendar.get(Calendar。日期);
}
}