【问题标题】:Android : How to compare current time with previous time in time picker? [duplicate]Android:如何在时间选择器中比较当前时间和以前的时间? [复制]
【发布时间】:2018-07-13 06:54:12
【问题描述】:

如果用户选择的时间小于当前时间,我想通知用户,我不想在时间选择器 UI 上显示它,只通知用户。 以下是我当前的代码。

     final int mHour, mMinute;
        final Calendar c = Calendar.getInstance();
        mHour = c.get(Calendar.HOUR_OF_DAY);
        mMinute = c.get(Calendar.MINUTE);
        hour = c.get(Calendar.HOUR);
//if()
        // Launch Time Picker Dialog
        TimePickerDialog timePickerDialog = new TimePickerDialog(mainActivity, new TimePickerDialog.OnTimeSetListener() {
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
               if (hourOfDay >= mHour) {
                    String strTime = hourOfDay + ":" + minute + ":00";
                    renewalTime.setText(strTime);
                } else {
                    Toast.makeText(mainActivity, "Time cannot be lesser than current time", Toast.LENGTH_LONG).show();
                }

            }
        }, mHour, mMinute, false);

        timePickerDialog.show();

    }

所以目前正在发生的事情是,如果当前时间是下午 12 点或之后,它的值是 12,1 等等,而上午 11 点它需要 23 等等......那么在这两种情况下如何比较它们? 谢谢。

【问题讨论】:

  • 添加小时和分钟并比较为 - 时间
  • @DarShan 你的意思是小时+分钟?
  • 是的,试试这个
  • @Pritish,表示您想在时间选择器中禁用未来日期?
  • 我想提出两点建议:最好的方法是将两个日期转换为毫秒时进行比较。您可以将两个日期的秒数设置为零,除非它是具有火箭科学的应用程序。

标签: android android-datepicker android-date


【解决方案1】:
public static boolean isTimeWith_in_Interval(String valueToCheck, String endTime, String startTime) {
    boolean isBetween = false;
    try {
        Date time1 = new SimpleDateFormat("HH:mm:ss").parse(endTime);

        Date time2 = new SimpleDateFormat("HH:mm:ss").parse(startTime);

        Date d = new SimpleDateFormat("HH:mm:ss").parse(valueToCheck);

        if (time1.after(d) && time2.before(d)) {
            isBetween = true;
        }
    } catch (ParseException e) {
        e.printStackTrace();
    }
    return isBetween;
}

【讨论】:

    【解决方案2】:

    试试这个代码

      public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                Calendar datetime = Calendar.getInstance();
                Calendar c = Calendar.getInstance();
                datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
                datetime.set(Calendar.MINUTE, minute);
                if(datetime.getTimeInMillis() > c.getTimeInMillis()){
        //            it's after current
                }else{
        //            it's before current'
                }
            }
    

    【讨论】:

      猜你喜欢
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-24
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      相关资源
      最近更新 更多