如何将日期字符串与当前日期进行比较?

How to compare a date string to current date?

我有一个日期选择器,我通过它在字符串中设置一个日期,即 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());

                }
            }
        });

我试过了,但无法进行比较。

请帮忙。谢谢。

使用以下任一方法比较日期

方法一

  • date1.after(日期 2)
  • date1.before(日期 2)
  • date1.equals(日期 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");
}

方法三

Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
  • cal1.after(cal2)
  • cal1.before(cal2)
  • cal1.equals(cal2)

您可以使用日期的compareTo()方法。

它将return一个整数值,

  • return 一个值 0 如果参数日期 (compareDate) 等于 到这个日期;
  • return 一个值 小于 0 如果此日期 日期参数 (compareDate) 之前;
  • return 值 大于 0 如果此日期 日期之后 参数(比较日期)。

因此,如果您想检查两个日期是否相同,您需要按如下方式修改 if condition

if (date.compareTo(compareDate.getTime()) == 0) {