如何从当前日期获得准确的年龄(包括年份和月份)?

时间:2015-05-18 08:55:49

标签: android methods datepicker monthcalendar

我想找到确切的年龄,而不仅仅是几年,但也应该确切的几个月。 即当前日期: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对象。