java計算2個時間相差多少年,多少個月,多少天
阿新 • • 發佈:2018-12-21
- import java.util.Calendar;
- publicclass Y {
- publicstaticvoid main(String[] args) {
- int ret[] = getDateLength( "20050531 ", "20070101 ");
- System.out.println(ret[0] + ": " + ret[1] + ": " + ret[2]);
- }
- staticint[] getDateLength(String fromDate, String toDate) {
- Calendar c1 = getCal(fromDate);
- Calendar c2 = getCal(toDate);
- int[] p1 = { c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), c1.get(Calendar.DAY_OF_MONTH) };
- int[] p2 = { c2.get(Calendar.YEAR), c2.get(Calendar.MONTH), c2.get(Calendar.DAY_OF_MONTH) };
- returnnewint[] { p2[0] - p1[0], p2[0] * 12 + p2[1] - p1[0] *
- }
- static Calendar getCal(String date) {
- Calendar cal = Calendar.getInstance();
- cal.clear();
- cal.set(Integer.parseInt(date.substring(0, 4)), Integer.parseInt(date.substring(4, 6)) -
- return cal;
- }
- }
計算年的差值和天的差值比較簡單。 關鍵是月的差值,可以用等價的概念把年退到月,比如2007年1月,等價於2006年13月,同理等價於0年(2007*12+1)月。 這樣y1年m1月到y2年m2月 分別等價於0年(y1*12+m1)月和0年(y2*12-m2)月 月份之差就是:y2*12+m2-y1*12-m1