如何将日期字符串与当前日期进行比较?
问题描述:
我有一个日期选择器,通过它我设置了一个日期字符串,即mDate。 现在设置时间我想检查当前日期和mDate是否相同,如果他们是相同的我想设置minTime TimePicker对话框,如果他们不相同最短时间不应设置为时间。如何将日期字符串与当前日期进行比较?
如果mDate为空仍然应该显示所有时间。
mEditTxt_Time.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Date date = null;
try {
if(!mDate.equals("")) {
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
date = format.parse(mDate);
}
Calendar compareDate = Calendar.getInstance();
compareDate.getTime();
Calendar now = Calendar.getInstance();
TimePickerDialog tpd = TimePickerDialog.newInstance(
PostShippingFragment.this,
now.get(Calendar.HOUR_OF_DAY),
now.get(Calendar.MINUTE),
true
);
if(date!=null) {
if (date.compareTo(compareDate.getTime())) {
tpd.setMinTime(now.get(Calendar.HOUR_OF_DAY), now.get(Calendar.MINUTE), now.get(Calendar.SECOND));
}
}
else {
tpd.setVersion(TimePickerDialog.Version.VERSION_2);
tpd.setAccentColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));
tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
@Override
public void onCancel(DialogInterface dialogInterface) {
Log.d("TimePicker", "Dialog was cancelled");
}
});
tpd.show(getFragmentManager(), "Timepickerdialog");
}
}
catch (ParseException e)
{
Log.e("exception",e.toString());
}
}
});
我试过这个,但我无法做比较。
请帮忙。谢谢。
答
您可以使用compareTo()
方法的日期。
如果参数日期(compareDate)是等于此日期它将返回一个整数值,
- 返回一个值;
- 返回一个值小于0如果这个日期是之前 Date参数(compareDate);
- 返回值大于0如果此日期为后日期 参数(compareDate)。
所以,你需要修改你的if condition
如下,如果你想检查两个日期是否相同。
if (date.compareTo(compareDate.getTime()) == 0) {
答
使用以下任一方法的比较的日期
方法1
- date1.after(DATE2)
- date1.before(DATE2)
- date1.equals( date2)
方法2
if(date1.compareTo(date2)>0){
Log.d("Date", "Date1 is after Date2");
}else if(date1.compareTo(date2)<0){
Log.d("Date", "Date1 is before Date2");
}else{
Log.d("Date", "Date1 is equal to Date2");
}
方法3
Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
- cal1.after(CAL2)
- cal1.before(CAL2)
- cal1.equals(CAL2)
+0
不错。每种方法的优点是什么?你能帮我们选择吗? –
怎么样等于日期类的方法? –
发布代码时,最好保持最小 - 在您的问题中,至少有50%的代码与您的问题完全无关。 – assylias
阅读https://stackoverflow.com/questions/2592501/how-to-compare-dates-in-java –