2016-11-21 2 views
0

я только нужно сегодня и дата вчера и когда другая дата выбрана она должна дать ошибку .... Я получаю все, что хорошо, но есть небольшая проблема Вот мой код:Проблемы в получении разностной Даты

if (flag == 0) { 
      if (getday(myCalendar.getTime()) == 1 || getday(myCalendar.getTime()) == 0) { 
       setvisitdate(); 
      } 
       Toast.makeText(getApplicationContext(), 
         "Selected date is not valid...", Toast.LENGTH_SHORT) 
         .show(); 

       flag = 0; 
       new DatePickerDialog(FvrActivity.this, date, 
         myCalendar.get(Calendar.YEAR), 
         myCalendar.get(Calendar.MONTH), 
         myCalendar.get(Calendar.DAY_OF_MONTH)).show(); 
      } 

здесь метод getday:

private int getday(Date selected_date) { 

     Calendar selected_cal = Calendar.getInstance(); 
     selected_cal .setTime(selected_date); 
     Calendar c = Calendar.getInstance(); 
     c.getTime(); 
     long diffInMillisec = c.getTimeInMillis() - selected_cal.getTimeInMillis(); 
     long diffInDays = TimeUnit.MILLISECONDS.toDays(diffInMillisec); 
     return (int) diffInDays; 
    } 

Предположим, что текущая дата 21/11/2016 ... Я просто хочу, чтобы выбрать 21 дату и 20, а не 22, но здесь я могу выбрать 22 also..Thank вы заранее решаете.

+0

Разногласия между 22 и 21 разница также один день. предположим, вы можете добавить .above() \ .belowe() check. также класс Date будет достаточным. Например, новая дата() получает текущую дату. – user5599807

ответ

1

Используйте эту логику:

Calendar selected_cal = Calendar.getInstance(); 
selected_cal.setTime(selected_date); 

//For next day     
Calendar nextDay = Calendar.getInstance(); 
nextDay.add(Calendar.DATE, 1);//Adding one day 
nextDay.set(Calendar.HOUR_OF_DAY, 0);//Setting calendar for start hour of the day 
nextDay.set(Calendar.MINUTE, 0);//Setting calendar for start minute of the day 
nextDay.set(Calendar.SECOND, 0);//Setting calendar for start second of the day 

//For previous days 
Calendar previousDay = Calendar.getInstance(); 
previousDay.add(Calendar.DATE, -2);//Adding one day 
previousDay.set(Calendar.HOUR_OF_DAY, 23);//Setting calendar for start hour of the day 
previousDay.set(Calendar.MINUTE, 59);//Setting calendar for start minute of the day 
previousDay.set(Calendar.SECOND, 59);//Setting calendar for start second of the day 

if(selected_cal.getTimeInMillis()>=nextDay.getTimeInMillis() 
|| selected_cal.getTimeInMillis()<previousDay.getTimeInMillis()){ 
     //Show error 
}else{ 
     //Do what you want to do 
} 
Смежные вопросы