有時在程式實作中有這樣的需求,如客戶想通過某人的出生日期來准確的得到此人從出生那一刻到現在的年齡,
如28歲10個月23天2小時或28Y10M23D2H等這樣的確切數據,如果我們能過程式自已實作,可能會花費較大的力氣,並且容易出問題,像少一天或多一天的情況出現,最近列意見在Apache common的組件庫中發現了現成的API函數可調用,現推薦給大家,希望有所幫助:
1.class來源:
package org.apache.commons.lang.time.DurationFormatUtils;
2.調用指定的方法
DurationFormatUtils.formatPeriod(long startMillis, long endMillis, String format,
boolean padWithZeros, TimeZone timezone);
startMillis: 代表起始日期,即出生日期
endMillis: 截至日期,一般為系統時間
format: 最後要顯示的方式,如28Y10M23D2H
padWithZeros:左邊是否補零
timezone: 時區
具體例子:
String result1 = DurationFormatUtils.formatPeriod(new Date(1985,6,11,23,23), new Date(2008,5,20,19,21), "Y-M-D-H",false,TimeZone.getDefault())
assertEquals(result1, "22Y11M8D19H");
另外還有一些其它方法,可參照相關文檔.