Проверьте, меньше ли время TimePicker, чем текущее время

Я пытаюсь установить время из TimePickerдиалога в TextView после проверки того, не превышает ли установленное время текущее время. Я беру время, выбранное из TimePicker в строке s, и анализирую его в формате (hh:mm). Я использовал SimpleDateFormat.parse("hh:mm"), но он сравнивает время в 1970 году и сегодняшнюю дату и время.

Поэтому я попробовал SimpleDateFormat("dd-mm-yy hh:mm:ss.SSS").parse(s); вместе с датой, месяцем и годом, но это дает мне ParseException. Я использую 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);
    }
}

person Abhi    schedule 30.01.2016    source источник
comment
Ваш вопрос не ясен.   -  person tiny sunlight    schedule 30.01.2016


Ответы (2)


Просто сравните метку времени.

    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'
        }
    }
person tiny sunlight    schedule 30.01.2016

Вместо того, чтобы выполнять сравнение с использованием Date, вы можете просто проверить его вручную следующим образом:

var isBefore=false;

if(hourOfDay < datetime.get(Calendar.HOUR_OF_DAY))
  isBefore=true;
else if(hourOfDay == datetime.get(Calendar.HOUR_OF_DAY)){
  if(minute < datetime.get(Calendar.MINUTE))
    isBefore=true;
}
person Oubai Abbasi    schedule 30.01.2016