android - 检查TimePicker时间是否小于当前时间

标签 android date calendar android-timepicker

在检查设置时间是否超过当前时间后,我尝试从 TextView 中的 TimePicker 对话框设置时间。我把从 TimePicker 中选择的时间放在字符串 s 中,并以 (hh:mm) 格式解析它。我使用了 SimpleDateFormat.parse("hh:mm") 但是比较的是1970年的时间和今天的日期时间。

所以我尝试了 SimpleDateFormat("dd-mm-yy hh:mm:ss.SSS").parse(s); 以及日期、月份和年份,但它给了我 解析异常。我使用 before() 来检查所选时间是否早于当前时间。但是我应该先解析设置的时间以及日期和时间才能使用该方法。如何检查 TimePicker 中设置的时间是否小于当前时间。

这是我尝试过的:

public Dialog onCreateDialog(Bundle savedInstanceState) {
        // Use the current time as the default values for the picker
        final Calendar c = Calendar.getInstance();
        int hour = c.get(Calendar.HOUR_OF_DAY);
        int minute = c.get(Calendar.MINUTE);

        // Create a new instance of TimePickerDialog and return it
        return new TimePickerDialog(getActivity(), this, hour, minute,
                DateFormat.is24HourFormat(getActivity()));
    }

    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);
        String s = c.get(Calendar.DAY_OF_WEEK) + "-" + (c.get(Calendar.MONTH) + 1) + "-" + c.get(Calendar.YEAR) + " " + String.valueOf((datetime.get(Calendar.HOUR_OF_DAY)) + ":" + datetime.get(Calendar.MINUTE) + ":" + datetime.get(Calendar.SECOND));
        try {
            Date d = new SimpleDateFormat("dd-mm-yy hh:mm:ss.SSS").parse(s);
            Date date = c.getTime();
            if (d.before(c.getTime())) {
                DateTimePicker.setBooleanDateCheckForTimePicker(false);
                Toast.makeText(getActivity(), "Enter valid time", Toast.LENGTH_LONG).show();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        if (datetime.get(Calendar.AM_PM) == Calendar.AM)
            am_pm = "AM";
        else if (datetime.get(Calendar.AM_PM) == Calendar.PM)
            am_pm = "PM";

        String strHrsToShow = (datetime.get(Calendar.HOUR) == 0) ? "12" : datetime.get(Calendar.HOUR) + "";
        boolean b = new DateTimePicker().booleanDateCheckForTimePicker;
        if (new DateTimePicker().booleanDateCheckForTimePicker) {
            timePicker.setText(strHrsToShow + ":" + datetime.get(Calendar.MINUTE) + " " + am_pm);
        }


        //timePicker.setText(hourOfDay + " "+minute);
    }
}

最佳答案

只是比较时间戳。

    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'
        }
    }

关于android - 检查TimePicker时间是否小于当前时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35100250/

相关文章:

java - 如何获取时间(hh :mm:ss) from two different dates in java

Android 动态壁纸触摸事件层次结构

java - 将数据从 Android 应用程序发送到 cakephp 的whith url

android - OnCapabilityChanged 在手机上工作但不在可穿戴设备上工作

Javascript 日期和 HTML

python - 更改日历的 django 管理模板

android - 减少gradle包装器的构建时间

php - 在 PHPMyAdmin 字段中存储星期几?

java - JSF 日历组件

用C语言计算给定年份中给定日期的总数(即星期日或星期一等)