Android Developer
Android Developer

Reputation: 1039

Android date picker calculation , before and after a specific date

I have an application which use the current date and a date that is chose by user using date picker as follow:

I used this code to do so ..

    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 }

Is there any other clean way to do that ! because this way is not working well !

Upvotes: 0

Views: 926

Answers (1)

Vincent Mimoun-Prat
Vincent Mimoun-Prat

Reputation: 28541

The other clean way to do it is to use the Joda Time library.

Other than that, everything can be done using millis and a single calendar instance:

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
  // ...
}

Should cover the requirement:

I have an application which use the current date and a date that is chose by user using date picker as follow:

  • If the date that the user chose is more than the current date +280 day, some code will be executed.
  • If the date that the user chose is less than the current date , some code will be executed.

Upvotes: 2

Related Questions