Я разрабатываю приложение, в котором хочу проверить, startTime
и startDate
меньше endTime
и endDate
, и если это то, то только информация должна быть сохранена в FirebaseDatabase
.Как проверить, что startTime и startDate меньше, чем endTime и endDate?
Я использую этот код, чтобы проверить, является startTime
< endTime
startDate
и < 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.
Что случилось и как это исправить?
Пожалуйста, дайте мне знать.
мне нужно изменить способ я дату и время в базе данных, хранящую? –
Да, вы можете хранить этот формат dd-MM-yyyy HH: mm: ss ... или вы проверяете дату перед проверкой проверки – sasikumar