Как сравнить время в средстве выбора времени Android?

Я использую 2 пикера времени в своем приложении, скажем, один для FROM-Time и второй для TO-Time. Теперь я хочу проверить, что при установке TO-Time оно не должно быть меньше, чем FROM-Time, и это не позволит изменить время меньше, чем FROM-Time.


person Supreet    schedule 03.01.2014    source источник
comment
Вы должны обратиться: stackoverflow.com/questions/5172593/   -  person Hardik Joshi    schedule 03.01.2014
comment
Вам необходимо выполнить эту проверку валидации для обратных вызовов, предоставленных TimePicker.   -  person Gaurav Gupta    schedule 03.01.2014
comment
@Supreet Если один из ответов решил вашу проблему, вы должны принять ответ, чтобы помочь людям, у которых возникнет такая же проблема в будущем.   -  person Mike Ortiz    schedule 04.01.2014


Ответы (2)


Чтобы получить текущую дату/время, вы просто создаете новый объект Date.

Для сравнения дат вы используете Date.compareTo():

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

Согласно документам, разница будет:

значение 0, если аргумент Дата равен этой Дате; значение меньше 0, если эта Дата находится перед аргументом Дата; и значение больше 0, если эта дата находится после аргумента даты.

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

Вы захотите установить onTimeSetListeners для каждого счетчика. В onTimeSet вы получите час int и минуту int. Преобразуйте это в секунды. Затем проверьте, не перекрываются ли два значения. Если они не перекрываются, установите текстовое значение, например, fromSpinner.setText("10:00").


РЕДАКТИРОВАТЬ: добавление примера кода. Вы должны установить следующий 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();
}
person Mike Ortiz    schedule 03.01.2014
comment
Возможно. Разве вы не говорите, что хотите убедиться, что TO-Time всегда › FROM-Time? - person Mike Ortiz; 03.01.2014
comment
@Supreet Я добавил пример кода. Дайте мне знать, если вам нужно, чтобы я заполнил любой из пробелов. - person Mike Ortiz; 03.01.2014