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

问题描述:

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

       } 
      } 
     }); 

我试过这个,但我无法做比较。

请帮忙。谢谢。

+1

怎么样等于日期类的方法? –

+0

发布代码时,最好保持最小 - 在您的问题中,至少有50%的代码与您的问题完全无关。 – assylias

+1

阅读https://*.com/questions/2592501/how-to-compare-dates-in-java –

您可以使用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

不错。每种方法的优点是什么?你能帮我们选择吗? –