我正在开发一个应用,我想在其中检查startTime
和startDate
是否小于endTime
和endDate
,如果只是信息应保存在FirebaseDatabase
。
我使用此代码检查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
和endTime = 8 AM
时,我"Start time is greater than end time. Fix it please."
显示SnackBar
,因为8 AM
小于10 AM
,但是上午10点是前一天,上午8点是第二天。因此,它应该将数据存储在数据库中,而不是显示SnackBar。
有什么问题以及如何解决这个问题?
请告诉我。
答案 0 :(得分:2)
使用小时,分钟和秒添加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
}