1

我在我的应用程序中使用了 2 个时间选择器,说一个用于 FROM-Time,第二个用于 TO-Time。现在我想检查一下,在设置 TO-Time 时它不应小于 FROM-Time,并且它不允许更改小于 FROM-Time 的时间。

4

2 回答 2

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();
}
于 2014-01-03T07:05:39.647 回答
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
}
于 2014-01-03T07:11:39.250 回答