有时在程式实作中有这样的需求,如客户想通过某人的出生日期来准确的得到此人从出生那一刻到现在的年龄,
如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");
另外还有一些其它方法,可参照相关文档.