Допустим, у вас есть ограниченное время, в течение которого вы должны создать временной блок по любой причине. Давайте преобразуем эти ограничивающие времена в фактические объекты Date в Java. Я использую
Date today = new Date();
, чтобы получить сегодняшнюю дату, вы можете использовать любой день, какой захотите.
Затем я объединяю сегодняшнюю дату (день месяца года) со временем, которое я определил, в двух строках, ночто вы можете получить от объекта и т. д.
private static Date combineDates(Date date, Date time) {
Calendar cal = Calendar.getInstance();
cal.setTime(time);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int min = cal.get(Calendar.MINUTE);
cal.setTime(date);
cal.set(Calendar.HOUR_OF_DAY, hour);
cal.set(Calendar.MINUTE, min);
return cal.getTime();
}
Date today = new Date();
SimpleDateFormat isoTime = new SimpleDateFormat("HH:mm", Locale.US);
String startTimeString = "09:00";
String endTimeString = "12:00";
Date startTime = new Date();
Date endTime = new Date();
try {
startTime = isoTime.parse(startTimeString);
endTime = isoTime.parse(endTimeString);
} catch (ParseException e){
Log.e(TAG, e.getMessage());
}
Date startDate = combineDates(today, startTime);
Date endDate = combineDates(today, endTime);
С этого момента единственное, что остается сделать, - это получить второй выбранный период времени и сравнить его с ограничивающими временами.
Что-то вроде:
if (newDateStart.after(startDate) && newDateEnd.before(endDate)) {
// Allow user to choose time
} else {
// Do not allow user to choose time
}
Я уверен, что это немного запутанно, но это лучшее, что у меня есть сейчас. Также обратите внимание, что есть более новые объекты Java, которые вы можете использовать, но это будет работать с большинством API Android, так что ...