我想找到确切的年龄,而不仅仅是几年,但也应该确切的几个月。
即当前日期:2015年5月18日,我要测试的日期是01-01-2010-输出应该是
4年8个月。
public float getAge (int _year, int _month, int _day) {
GregorianCalendar cal = new GregorianCalendar();
int y, m, d,a,b;
//float ans = 0;
y = cal.get(Calendar.YEAR);
m = cal.get(Calendar.MONTH);
d = cal.get(Calendar.DAY_OF_MONTH);
cal.set(_year, _month, _day);
a = y - (cal.get(Calendar.YEAR));
// b=m-(cal.get(Calendar.MONTH));
if ((m < cal.get(Calendar.MONTH))
|| ((m == cal.get(Calendar.MONTH)) && (d < cal
.get(Calendar.DAY_OF_MONTH)))) {
--a;
}
if(a < 0)
throw new IllegalArgumentException("Age < 0");
ans=a;
return ans;
}
1 个答案:
答案 0 :(得分:1)
使用Joda时间。最好计算日期差异。下载joda-time.jar并将其粘贴到libs中。
然后使用以下代码:
public static String getTimestampDiff(){
final DateTime start = new DateTime(datefrom.getTime());
final DateTime end = new DateTime(dateto.getTime());
期间p =新期间(开始,结束);
PeriodFormatter formatter = new PeriodFormatterBuilder()
.printZeroAlways()。minimumPrintedDigits(2).appendYears()
.appendSuffix(&#34;年&#34;,&#34;年&#34;)。appendSeparator(&#34;,&#34;)
.appendMonths()。appendSuffix(&#34; month&#34;,&#34; months&#34;)。toFormatter();
/ * .appendSeparator(&#34;,&#34;)。appendDays()
.appendSuffix(&#34; day&#34;,&#34; days&#34;)。appendSeparator(&#34;和&#34;)
。.appendHours()appendLiteral(&#34;:&#34;)appendMinutes()。
.appendLiteral(&#34;:&#34;)appendSeconds()toFormatter(); * /。
return p.toString(formatter);
}
您应该将datefrom和dateto声明为Date类的引用,如:static Date datefrom,dateto;并从对象形成日期,如:
private DatePickerDialog.OnDateSetListener pickerListener1 = new DatePickerDialog.OnDateSetListener(){
//当关闭对话框时,将调用下面的方法。
@SuppressWarnings(&#34;弃用&#34)
@覆盖
public void onDateSet(DatePicker视图,int selectedYear,
int selectedMonth,int selectedDay){
datepickeryear = selectedYear;
datepickermonth = selectedMonth;
datepickerday = selectedDay;
//显示所选日期
edfromdate.setText(new StringBuilder()。append(datepickeryear)
.append(&#34; - &#34;)。append(datepickermonth + 1)
.append(&#34; - &#34;)。append(datepickerday).append(&#34;&#34;));
datefrom = new Date(datepickeryear,datepickermonth + 1,datepickerday);
}
};
这里我使用了一个datepicker,但你可以形成一个自己的Date对象。