Android日期选择器计算,在特定日期之前和之后

时间:2012-11-26 08:35:18

标签: java android date calendar datepicker

我有一个应用程序使用当前日期和用户使用日期选择器选择的日期如下:

  • 如果用户选择的日期超过当前日期+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 }

还有其他干净的方法吗!因为这种方式效果不好!

1 个答案:

答案 0 :(得分:2)

另一种干净的方法是使用Joda Time库。

除此之外,一切都可以使用millis和单个日历实例完成:

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天,则会执行一些代码。
  •   
  • 如果用户选择的日期小于当前日期,则会执行一些代码。
  •