android 中使用 compareTo() 方法进行日期比较的问题
Issue in date comparision using compareTo() method in android
我正在尝试以 24 小时格式比较 android 中的两个日期,以下是日期格式,但是当一个接一个地尝试时,两者都给出相同的结果。
SimpleDateFormat simpleDateFormat24Hour = new SimpleDateFormat("mm/dd/yyyy HH:mm");
SimpleDateFormat simpleDateFormat24Hour = new SimpleDateFormat("mm/dd/yyyy HH:mm", Locale.US);
Log.e(startDateEditText.getText().toString().trim());
Log.e(endDateEditText.getText().toString().trim());
Date startDate = simpleDateFormat24Hour.parse(startDateEditText.getText().toString().trim());
Date endDate = simpleDateFormat24Hour.parse(endDateEditText.getText().toString().trim());
if (startDate.compareTo(endDate) > 0) {
showAlertDialog("End date should greater than start date.");
}
以下分别是开始日期和结束日期的输入
2017 年 4 月 20 日 11:07
2017 年 5 月 18 日 11:22
如果结束日期 selection 比 selection 晚一个月或者如果 select 下个月的日期那么这个问题就会出现,但是如果日期 selection 来自同一个月那么这个工作正常.
请提出一些解决此问题的提示。提前致谢。
试试这个,
if (false == isDateAfter("04/20/2017 11:07", "05/18/2017 11:22")) {
showAlertDialog("End date should greater than start date.");
}
isDateAfter 方法:
public static boolean isDateAfter(String startDate, String endDate) {
try {
String myFormatString = "dd-MM-yyyy"; // for example
SimpleDateFormat df = new SimpleDateFormat(myFormatString, Locale.ENGLISH);
Date endingDate = df.parse(endDate);
Date startingDate = df.parse(startDate);
return endingDate.equals(startingDate) || !endingDate.after(startingDate);
} catch (Exception e) {
return false;
}
}
我正在尝试以 24 小时格式比较 android 中的两个日期,以下是日期格式,但是当一个接一个地尝试时,两者都给出相同的结果。
SimpleDateFormat simpleDateFormat24Hour = new SimpleDateFormat("mm/dd/yyyy HH:mm");
SimpleDateFormat simpleDateFormat24Hour = new SimpleDateFormat("mm/dd/yyyy HH:mm", Locale.US);
Log.e(startDateEditText.getText().toString().trim());
Log.e(endDateEditText.getText().toString().trim());
Date startDate = simpleDateFormat24Hour.parse(startDateEditText.getText().toString().trim());
Date endDate = simpleDateFormat24Hour.parse(endDateEditText.getText().toString().trim());
if (startDate.compareTo(endDate) > 0) {
showAlertDialog("End date should greater than start date.");
}
以下分别是开始日期和结束日期的输入
2017 年 4 月 20 日 11:07
2017 年 5 月 18 日 11:22
如果结束日期 selection 比 selection 晚一个月或者如果 select 下个月的日期那么这个问题就会出现,但是如果日期 selection 来自同一个月那么这个工作正常.
请提出一些解决此问题的提示。提前致谢。
试试这个,
if (false == isDateAfter("04/20/2017 11:07", "05/18/2017 11:22")) {
showAlertDialog("End date should greater than start date.");
}
isDateAfter 方法:
public static boolean isDateAfter(String startDate, String endDate) {
try {
String myFormatString = "dd-MM-yyyy"; // for example
SimpleDateFormat df = new SimpleDateFormat(myFormatString, Locale.ENGLISH);
Date endingDate = df.parse(endDate);
Date startingDate = df.parse(startDate);
return endingDate.equals(startingDate) || !endingDate.after(startingDate);
} catch (Exception e) {
return false;
}
}