1. 程式人生 > >java計算2個時間相差多少年,多少個月,多少天

java計算2個時間相差多少年,多少個月,多少天

               
  1. import  java.util.Calendar; 
  2. publicclass  Y  { 
  3. publicstaticvoid  main(String[]  args)  { 
  4. int  ret[]  =  getDateLength( "20050531 ", "20070101 "); 
  5.       System.out.println(ret[0]  +  ": "  +  ret[1]  +  ": "  +  ret[2]); 
  6.    } 
  7. staticint[]  getDateLength(String  fromDate, String  toDate)  { 
  8.       Calendar  c1  =  getCal(fromDate); 
  9.       Calendar  c2  =  getCal(toDate); 
  10. int[]  p1  =  {  c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), c1.get(Calendar.DAY_OF_MONTH)  }; 
  11. int[]  p2  =  {  c2.get(Calendar.YEAR), c2.get(Calendar.MONTH), c2.get(Calendar.DAY_OF_MONTH)  }; 
  12. returnnewint[]  {  p2[0]  -  p1[0], p2[0]  *  12  +  p2[1]  -  p1[0]  *  
    12  -  p1[1], (int)  ((c2.getTimeInMillis()  -  c1.getTimeInMillis())  /  (24  *  3600  *  1000))  }; 
  13.    } 
  14. static  Calendar  getCal(String  date)  { 
  15.       Calendar  cal  =  Calendar.getInstance(); 
  16.       cal.clear(); 
  17.       cal.set(Integer.parseInt(date.substring(04)), Integer.parseInt(date.substring(46))  -  
    1, Integer.parseInt(date.substring(68))); 
  18. return  cal; 
  19.    } 

計算年的差值和天的差值比較簡單。 關鍵是月的差值,可以用等價的概念把年退到月,比如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