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

Java 如何将日期字符串与当前日期进行比较?,java,android,datetime,java.util.date,date-comparison,Java,Android,Datetime,Java.util.date,Date Comparison,我有一个日期选择器,通过它我可以在字符串中设置日期,即mDate。 现在要设置时间,我要检查当前日期和mDate是否相同如果它们相同,我要将minTime设置为TimePicker对话框,如果它们不相同,则不应将minTime设置为time 如果mDate为空,则时间应显示所有时间 mEditTxt_Time.setOnClickListener(new View.OnClickListener() { @Override public vo

我有一个日期选择器,通过它我可以在字符串中设置日期,即mDate。 现在要设置时间,我要检查当前日期和mDate是否相同如果它们相同,我要将minTime设置为TimePicker对话框,如果它们不相同,则不应将minTime设置为time

如果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());

                }
            }
        });
我试过这个,但我不能做比较


请帮忙。谢谢。

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

方法1

  • 日期1.之后(日期2)
  • 日期1.之前(日期2)
  • 日期1.等于(日期2)
方法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");
}
  • 计算1.之后(计算2)
  • 计算1.之前(计算2)
  • cal1.等于(cal2)

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

方法1

  • 日期1.之后(日期2)
  • 日期1.之前(日期2)
  • 日期1.等于(日期2)
方法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");
}
  • 计算1.之后(计算2)
  • 计算1.之前(计算2)
  • cal1.等于(cal2)

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

它将返回一个整数

  • 如果参数日期(compareDate)与此日期相等,则返回值0
  • 如果此日期早于日期参数(比较),则返回小于0的值
  • 如果此日期在日期之后,则返回大于0的值 参数(比较)
因此,如果要检查两个日期是否相同,则需要按如下所示修改条件

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

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

它将返回一个整数

  • 如果参数日期(compareDate)与此日期相等,则返回值0
  • 如果此日期早于日期参数(比较),则返回小于0的值
  • 如果此日期在日期之后,则返回大于0的值 参数(比较)
因此,如果要检查两个日期是否相同,则需要按如下所示修改条件

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

date类的equals方法如何?在发布代码时,最好将其最小化-在您的问题中,至少有50%的代码与您的问题完全无关。阅读本文,您可以使用此处提供的简单解决方案date类的equals方法如何?发布代码时,将其最小化始终是一个好主意-在您的问题中,至少有50%的代码与您的问题完全无关。每种方法的优点是什么?你能帮我们挑选吗?很好。每种方法的优点是什么?你能帮我们挑选吗?