Как сравнить, является ли выбранное время окончания календаря более ранним, чем выбранное время начала календаря для 12-часового календарного времени? - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь проверить, не выбрано ли выбранное время окончания календаря раньше, чем выбранное время начала календаря на 12-часовой период времени. В настоящее время я использую 2 разных атрибута для хранения выбранного времени начала и окончания календаря следующим образом:

@Override
public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) {
    String am_pm = "";

    Calendar datetime = Calendar.getInstance();
    datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
    datetime.set(Calendar.MINUTE, minute);

    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)+"";
    String strMinsToShow = minute < 10 ? "0"+minute : ""+minute;

    if (isStartTimeClicked) {
        starttime.setText(String.format("%s:%s %s", strHrsToShow, strMinsToShow, am_pm));
    } else {
        endtime.setText(String.format("%s:%s %s", strHrsToShow, strMinsToShow, am_pm));
    }
    isStartTimeClicked = false;
}

Я просто хочу сравнить оба эти времени начала и окончания, выбранные таким образом, чтобы время окончания не могло быть раньше или равно времени начала. (это должно быть после начального времени, скажем, начальное время - 2 часа дня, конечное время должно быть не меньше 14:01 или позже и не может быть 11 утра и т. д.). даже булевой функции, показывающей, что выбранное время окончания раньше или позже времени начала, будет достаточно, но я не уверен, как это сделать в 12-часовом масштабе времени на основе моего кода, как показано выше. Есть идеи? Заранее спасибо!

Функция, которую я использую для таймера:

   public void openMyTimePicker() {
        Calendar now = Calendar.getInstance();
        TimePickerDialog tpd = TimePickerDialog.newInstance(
                this,
                now.get(Calendar.HOUR_OF_DAY),
                now.get(Calendar.MINUTE),
                false
        );
        tpd.show(getFragmentManager(), "Timepickerdialog");
    }

Ответы [ 2 ]

1 голос
/ 11 апреля 2019

в вашем таймере выбора времени onTimeSet() проверка времени, установленном в таймере выбора времени начала

//You will need to declare enddatetime and startdatetime at class level
if (enddatetime.getTimeInMillis() >= startdatetime.getTimeInMillis()) {
    int hour = hourOfDay % 12;
    btnPickStartTime.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour,
                            minute, hourOfDay < 12 ? "am" : "pm"));
} else {
    Toast.makeText(getApplicationContext(), "Invalid Time", Toast.LENGTH_LONG).show(); // before time
}
0 голосов
/ 11 апреля 2019

Вам необходимо использовать функциональность Date.after или Date.before

//Compare Date
if (endDate.before(startDate)) {
    //End date is before start date
} else {
    //End date is after start date
}
...