如何在android时间选择器中比较时间?

时间:2014-01-03 06:58:21

标签: android android-timepicker

我在我的应用程序中使用2次pikers,其中一次是FROM-Time,第二次是TO-Time。现在我想在设置TO-Time时检查它不应该小于FROM-Time,并且它不允许更改时间小于FROM-Time。

2 个答案:

答案 0 :(得分:0)

您需要为每个微调器设置onTimeSetListeners。在onTimeSet中,您将得到int小时和int分钟。将其转换为秒。然后,检查两个值是否重叠。如果它们不重叠,请使用例如fromSpinner.setText(“10:00 AM”)设置文本值。


编辑:添加示例代码。您可以将以下onDateSetListener设置为toTimeSpinner,并将类似的设置为fromTimeSpinner。

private OnDateSetListener onDateSetListener = new OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
        Date date = makeDateGMT(year, monthOfYear, dayOfMonth);
        if (date.after(fromTimeDate)) {
            // We can accept this as a valid toTime
            toTimeDate = date;
            // Use simpleDateFormat to format Date
            toTimeSpinner.setText(formattedDate);
        }
    }
};

private void makeDateGMT(int year, int month, int day) {
    GregorianCalendar calendar = new GregorianCalendar();
    calendar.setTimeZone(TIME_ZONE_GMT);
    calendar.set(year, monthOfYear, dayOfMonth, hourOfDay, minute);
    return calendar.getTime();
}

答案 1 :(得分:0)

要获取当前日期/时间,您只需创建一个新的Date对象。

要比较日期,请使用Date.compareTo():

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date();
int difference = now.compareTo(formatter.parse(data));

根据文档,差异将是:

如果参数Date等于此Date,则值为0;如果此Date在Date参数之前,则小于0的值;如果此Date在Date参数之后,则值大于0.

if (difference == 0) {
    // the dates are equal
}
else if (difference < 0) {
    // the date is before now
}
else {
    // the date is after now
}