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

时间:2017-06-13 08:02:35

标签: java android datetime java.util.date date-comparison

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

                }
            }
        });

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

请帮忙。谢谢。

2 个答案:

答案 0 :(得分:4)

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

它将返回整数值,

  • 如果参数Date(compareDate)等于到此日期,则返回值 0 ;
  • 返回值小于0 如果此日期之前日期参数(compareDate);
  • 如果日期 日期,则返回值大于0 参数(compareDate)。

因此,如果您想检查两个日期是否相同,则需要修改if condition,如下所示。

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

答案 1 :(得分: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)