给定阳历(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。日期);

}

}