5

与えられた誕生日の入力に従って人の年齢を取得することに関連するアプリを実行しています。そのために、その日付から現在の日付までの合計日数を以下のコードから取得しています。

      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);

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

4

2 に答える 2

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 time. 年、月、日、時、分、秒で年齢を計算するを参照してください。

于 2012-10-05T04:34:15.367 に答える
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);;
     }
于 2012-10-05T04:56:55.357 に答える