-2

我正在開發一個應用程序,我想查看startTimestartDate是否小於endTimeendDate,如果是,那麼只有信息應該保存在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

相關問題