0

現在の日付と、次のように日付ピッカーを使用してユーザーが選択した日付を使用するアプリケーションがあります。

  • ユーザーが選択した日付が現在の日付+280日よりも長い場合、いくつかのコードが実行されます。

  • ユーザーが選択した日付が現在の日付よりも短い場合、いくつかのコードが実行されます。

私はそうするためにこのコードを使用しました..

    Calendar start2 = Calendar.getInstance();

       int birthYear = birthDayDatePicker.getYear();
            int birthMonth = birthDayDatePicker.getMonth();
            int birthDay = birthDayDatePicker.getDayOfMonth();

            start2.set(birthYear, birthMonth, birthDay);

           Calendar cal2 = Calendar.getInstance();
           cal2.setTime(birthDate);
           cal2.add(Calendar.DAY_OF_MONTH,daysToAdd);
 birthDayChosenCalender.set(birthYear,birthMonth,birthDay);
         MaxBirthDayCalender.set(currentYear, currentMonth, currentDay);

          long diff = birthDayChosenCalender.getTimeInMillis() - MaxBirthDayCalender.getTimeInMillis(); //result in millis
          long daysBetween = diff / (24 * 60 * 60 * 1000);
          System.out.println("Days between ,,,,,,,,,,,,,,,,,,"+daysBetween);

          if(MaxBirthDayCalender.before(birthDayChosenCalender) && daysBetween <= 280){

do sth }

それを行う他のクリーンな方法はありますか?この方法はうまく機能していないからです!

4

1 に答える 1

2

それを行うもう1つのクリーンな方法は、JodaTimeライブラリを使用することです。

それ以外は、ミリ秒と単一のカレンダーインスタンスを使用してすべてを実行できます。

Calendar pickedDate = new GregorianCalendar(
        picker.getYear(), 
        picker.getMonth(), 
        picker.getDayOfMonth());
long pickedTime = pickedDate.getTimeInMillis();
long now = new Date().getTime();

if (pickedTime - now <= (280 * 24 * 60 * 60 * 1000)) { // 280 days in milliseconds
  // ...
}

要件をカバーする必要があります:

現在の日付と、次のように日付ピッカーを使用してユーザーが選択した日付を使用するアプリケーションがあります。

  • ユーザーが選択した日付が現在の日付+280日よりも長い場合、いくつかのコードが実行されます。
  • ユーザーが選択した日付が現在の日付よりも短い場合、いくつかのコードが実行されます。
于 2012-11-26T08:37:15.383 に答える