2012-10-05 5 views
5

私は、与えられた誕生日の入力に従って人の年齢を取得することに関連するアプリをやっています。そのために、その日付から現在の日付までの合計日数を下のコードから取得しています。Androidの変更方法年数、月数、日数の合計日数は正確ですか?

 String strThatDay = "1991/05/10"; 
     SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
     Date d = null; 
     try { 

     try { 
     d = formatter.parse(strThatDay); 
     Log.i(TAG, "" +d); 
     } catch (java.text.ParseException e) { 

     e.printStackTrace(); 
     } 
     } catch (ParseException e) { 

     e.printStackTrace(); 
     } 
     Calendar thatDay = Calendar.getInstance(); 
     thatDay.setTime(d); //rest is the same.... 

     Calendar today = Calendar.getInstance(); 
     long diff = today.getTimeInMillis() - thatDay.getTimeInMillis(); 
     long days = diff/(24 * 60 * 60 * 1000); 

私は合計日数を取得しています。ので、私の要件は、助けてください..正確年、月と日の日数の合計数を変換です....

+0

モジュラスと除算にはそれぞれ%と/と呼ばれる演算子があります。 1年に12ヶ月、1ヶ月に30日、1年に356日です。それで十分でしょう。 –

+0

@VinaySShenoyどのように簡単な例を行うか... – NagarjunaReddy

+0

@VinaySShenoy何年にもわたって355日間、月間31,30,29および28日間あります。この問題を解決するにはどうすればいいですか? –

答えて

6

あなたはDurationクラスを使用する必要があります。

Duration duration = new Duration(); 
duration.add(today); 
duration.substract(birthDate); 
int years = duration.getYears(); 
int months = duration.getMonths(); 
int days = duration.getDays(); 

他のいくつかの選択肢が使用することを含んで時間管理に特化したライブラリ:Joda時間。 Calculate age in Years, Months, Days, Hours, Minutes, and Seconds

3
String strThatDay = "1991/05/10"; 
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd"); 
    Date thatDate = null; 
    try { 

    try { 
    thatDate = formatter.parse(strThatDay); 

    Calendar thatDay = Calendar.getInstance(); 
    thatDay.setTime(thatDate); 
    Calendar toDay = Calendar.getInstance(); 
    toDay.setTime(thatDate); 

    toDay.add(Calendar.DATE, noOfDays); 

    int year = toDay.getTime().getYear() - thatDay.getTime().getYear(); 
    int month = toDay.getTime().getMonth() - thatDay.getTime().getMonth(); 
    if(month<0){ 
     year-- 
     month = month+12; 
    } 
    int days = toDay.getTime().getDate() - thatDay.getTime().getDate(); 
    if(month<0){ 
     month-- 
     days = days+ toDay.getMaximum(Calendar.MONTH);; 
    } 
関連する問題