我在我的应用程序中使用了 2 个时间选择器,说一个用于 FROM-Time,第二个用于 TO-Time。现在我想检查一下,在设置 TO-Time 时它不应小于 FROM-Time,并且它不允许更改小于 FROM-Time 的时间。
问问题
1661 次
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 回答