-2

Я разрабатываю приложение, в котором хочу проверить, startTime и startDate меньше endTime и endDate, и если это то, то только информация должна быть сохранена в FirebaseDatabase.Как проверить, что startTime и startDate меньше, чем endTime и endDate?

Я использую этот код, чтобы проверить, является startTime < endTimestartDate и < endDate:

 try { 
      Date date1 = currentTime.parse(btnChooseStartTime.getText().toString()); 
      Date date2 = currentTime.parse(btnChooseEndTime.getText().toString()); 
      differenceBetweenStartEndTime = date2.getTime() - date1.getTime(); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
    } 

      isEndDateGreaterThanStartDate = CheckDates(btnChooseEndDate.getText().toString(), btnChooseStartDate.getText().toString()); 

      if (String.valueOf(differenceBetweenStartEndTime).contains("-")) { 
       Snackbar snackbar = Snackbar 
            .make(coordinatorLayout, "Start time is greater than end time. Fix it please.", Snackbar.LENGTH_SHORT); 
       snackbar.setDuration(3500); 
       snackbar.show(); 
       progressDialogPostingE.dismiss(); 
      } else if (!isEndDateGreaterThanStartDate) { 
       Snackbar snackbar = Snackbar 
            .make(coordinatorLayout, "Start date is greater than end date. Fix it please.", Snackbar.LENGTH_SHORT); 
       snackbar.setDuration(3500); 
       snackbar.show(); 
       progressDialogPostingE.dismiss(); 
      } else { 
// code for storing information in database 
} 

здесь CheckDates() метод:

public static boolean CheckDates(String d2, String d1) { 
     SimpleDateFormat dfDate = new SimpleDateFormat("dd-MM-yyyy"); 
     boolean b = false; 
     try { 
      if(dfDate.parse(d1).before(dfDate.parse(d2))) 
      { 
       b = true;//If start date is before end date 
      } 
      else if(dfDate.parse(d1).equals(dfDate.parse(d2))) 
      { 
       b = true;//If two dates are equal 
      } 
      else if (dfDate.parse(d2).before(dfDate.parse(d1))) 
      { 
       b = false; //If start date is after the end date 

      } 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return b; 
    } 

Этот код работает почти нормально, но когда я установка startDate = 20-11-2016 и startTime = 10 AM, а затем endDate = 21-11-2016 a nd endTime = 8 AM, я получаю "Start time is greater than end time. Fix it please.", указанный в SnackBar, потому что 8 AM составляет менее 10 AM, но здесь 10 утра предыдущего дня и 8 часов утра следующего дня. Таким образом, он должен хранить данные в базе данных, а не показывать SnackBar.

Что случилось и как это исправить?

Пожалуйста, дайте мне знать.

ответ

1

Добавить SimpleDateFormat с часами, минутами и секундами

SimpleDateFormat dfDate = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
    boolean b = false; 
    try { 
     if(dfDate.parse(d1).before(dfDate.parse(d2))) 
     { 
      b = true;//If start date is before end date 
     } 
     else if(dfDate.parse(d1).equals(dfDate.parse(d2))) 
     { 
      b = true;//If two dates are equal 
     } 
     else if (dfDate.parse(d2).before(dfDate.parse(d1))) 
     { 
      b = false; //If start date is after the end date 

     } 
+0

мне нужно изменить способ я дату и время в базе данных, хранящую? –

+0

Да, вы можете хранить этот формат dd-MM-yyyy HH: mm: ss ... или вы проверяете дату перед проверкой проверки – sasikumar