【问题标题】:How to compare a date string to current date?如何将日期字符串与当前日期进行比较?
【发布时间】:2017-06-13 08:02:35
【问题描述】:

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

                }
            }
        });

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

请帮忙。谢谢。

【问题讨论】:

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


【解决方案1】:

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

它将返回一个整数值,

  • 如果参数 Date (compareDate) equal 到此 Date,则返回值 0
  • 如果此日期日期参数 (compareDate) 之前,则返回一个值小于 0
  • 如果此日期该日期之后,则返回一个值大于 0 参数(比较日期)。

所以,如果你想检查两个日期是否相同,你需要修改你的if condition 如下。

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

【讨论】:

    【解决方案2】:

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

    方法一

    • date1.after(date2)
    • date1.before(date2)
    • date1.equals(date2)

    方法二

    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)

    【讨论】:

    • 不错。每种方法的优点是什么?你能帮我们挑选吗?
    猜你喜欢
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2022-01-16
    • 2017-05-15
    • 1970-01-01
    • 2018-08-21
    相关资源
    最近更新 更多