2013-08-26 45 views
1

如果我給一個出生日期(DOB)的那麼我們如何計算在當前的Android年齡試圖建立一個年齡計算器

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mDateDisplay = (TextView) findViewById(R.id.dateDisplay); 
     textView_cage = (TextView) findViewById(R.id.textView_cage); 
     textView_currentagediff = (TextView) findViewById(R.id.textView_currentagediff); 
     textView4 = (TextView) findViewById(R.id.textView4); 
     mPickDate = (Button) findViewById(R.id.pickDate); 

     mPickDate.setOnClickListener(new View.OnClickListener() { 
      @SuppressLint("ValidFragment") 
      @TargetApi(Build.VERSION_CODES.HONEYCOMB) 
      public void onClick(View v) { 

       DialogFragment newFragment = new DatePickerFragment(); 
       newFragment.show(getFragmentManager(), "datePicker"); 
      } 
     }); 
    } 

    @TargetApi(Build.VERSION_CODES.HONEYCOMB) 
    class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener { 

     public Dialog onCreateDialog(Bundle savedInstanceState) { 

      final Calendar c = Calendar.getInstance(); 
      int year = c.get(Calendar.YEAR); 
      int month = c.get(Calendar.MONTH); 
      int day = c.get(Calendar.DAY_OF_MONTH); 
      System.out.println("Current Setdate"); 
      System.out.println("Year" + year); 
      System.out.println("Month" + month); 
      System.out.println("Date" + day); 

      return new DatePickerDialog(getActivity(), this, year, month, day); 
     } 

     @Override 
     public void onDateSet(DatePicker view, int year, int month, int day) { 

      mDateDisplay.setText(String.valueOf(day) + "/" + String.valueOf(month + 1) + "/" + String.valueOf(year)); 
      Date d = new Date(year, month, day); 
      System.out.println("Current Setdate"); 

      Date d1 = new Date(); 
      int year2 = d1.getYear(); 
      int month2 = d1.getMonth(); 
      int day2 = d1.getDate(); 

      System.out.println("Current aaj ki date"); 
      System.out.println("Year" + year2); 
      System.out.println("Month" + month2); 
      System.out.println("Date" + day2); 

      int year3 = year2 - year; 
      int month3 = (month2 + 1) - month; 
      int day3 = day2 - day; 
      System.out.println("Current aaj kitnhesal k ho gaye "); 
      System.out.println("Year" + year3); 
      System.out.println("Month" + month3); 
      System.out.println("Date" + day3); 
      setnewage(year3, month3, day3); 

     } 

     private void setnewage(int year4, int month4, int day4) { 
      Date d5 = new Date(year4, month4, day4); 

      CharSequence day = DateFormat.format("d", d5); 
      CharSequence month = DateFormat.format("M", d5); 
      CharSequence year = DateFormat.format("yyyy", d5); 

      textView_currentagediff.setText(year + " Years " + month + " Months and " + day + " days"); 
      Date d1 = new Date(); 
      int year2 = d1.getYear(); 
      int month2 = d1.getMonth(); 
      int day2 = d1.getDate(); 


    } 

    } 

} 

我想選擇的日期出生Datepickerdialog和選擇日期後,我想獲得當前時代。 請給我一些在Android的例子。

回答

1

這是簡單的java代碼,你必須提供你的出生日期和當前日期,那麼你的最終結果將是你的年齡。

public static int getDiffBetYears(Date first, Date last) { 
    Calendar firstDate = getCalendar(first); 
    Calendar secDate = getCalendar(last); 
    int diff = secDate.get(YEAR) - firstDate.get(YEAR); 
    if (firstDate.get(MONTH) > secDate.get(MONTH) || 
     (firstDate.get(MONTH) == secDate.get(MONTH) && a.get(DATE) > secDate.get(DATE))) { 
     diff--; 
    } 
    return diff; 
} 

public static Calendar getCalendar(Date date) { 
    Calendar cal = Calendar.getInstance(Locale.US); 
    cal.setTime(date); 
    return cal; 
} 
+0

你好,我想讀上編輯文本選項,目前的年齡和出生日期我們將如何提供reslut其他文本視圖之間讀取出生日期和calculte diffrence後出生日期,, – user2713232

+0

確定.. 然後你要做的是什麼.. 。從'edittext'得到的'text'中提取日期,月份和年份,然後查看這些[link](http://stackoverflow.com/a/2687094/1758960) – Gru

2

你可以試試這個:

// get the current date in format specified. 
    public String getCurrentDate(){ 

    SimpleDateFormat df = new SimpleDateFormat("dd-MMMM-yyyy hh:mm aa"); 
    return df.format(Calendar.getInstance().getTime()); 
} 

public void getDateDifference(String dob){ 

      String dateOfBirth = dob; 
     String dateCurrent = getCurrentDate(); 

     //HH converts hour in 24 hours format (0-23), day calculation 
     SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 

     Date d1 = null; 
     Date d2 = null; 

     try { 
      d1 = format.parse(dateOfBirth); 
      d2 = format.parse(dateCurrent); 

      //in milliseconds 
      long diff = d2.getTime() - d1.getTime(); 

      long diffSeconds = diff/1000 % 60; 
      long diffMinutes = diff/(60 * 1000) % 60; 
      long diffHours = diff/(60 * 60 * 1000) % 24; 
      long diffDays = diff/(24 * 60 * 60 * 1000);    

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

步驟1:獲取使用DatePickerDialog進入的出生日期。調用方法getDateDifference並將此dob值作爲參數傳遞。

第2步:使用setText()方法將獲得的差異設置爲文本視圖。