Я хочу проверить, перекрываются ли домены моих событий. Я сохранил время начала и время окончания в формате даты. Моя попытка - проверить, не совпадают ли даты или нет. Но иногда это терпит неудачу.Почему сравнение даты не удается?
В большинстве случаев это происходит с 11:00 до 12:00 и с 12:00 до 1:00 утра. Иногда между ними также возникают другие периоды времени.
Поскольку у меня есть период времени хранится в виде,
datefrom - Пн мар 14 23:00:00 dateto - пн 14 марта 00:00:00
и теперь я пытался добавить период времени, как:
checkFromDate - пн 14 марта 12:14:00 checkToDate - Пн мар 14 11:14:00
и возвращает истину. Показывает событие, хотя оно не дозу.
Дата Формат:
df = new SimpleDateFormat("E MMM dd HH:mm:ss zzzz yyyy");
ли что-то неправильно в формате даты ??
функция checkOverlapping
public void checkOverlappingEvents()
{
List<EventData> checkOverlappingEvents = new ArrayList<>();
EventTableHelper eventTableHelper = new EventTableHelper(AddEventActivity.this);
switch (dayOfWeek)
{
case "Mon":
checkOverlappingEvents = eventTableHelper.getAllEvents("Mon");
for (EventData e : checkOverlappingEvents)
{
df = new SimpleDateFormat("E MMM dd HH:mm:ss zzzz yyyy");
Date checkFromDate = new Date();
Date checkToDate = new Date();
try {
checkFromDate = df.parse(e.getFromDate());
checkToDate = df.parse(e.getToDate());
} catch (ParseException ex) {
}
// int startHours = datefrom.getHours();
// int endHours = dateto.getMinutes();
// String startTime = checkFromDate.getHours() + ":" + checkFromDate.getMinutes();
// String endTime = checkToDate.getHours() + ":" + checkToDate.getMinutes();
// String startDate = datefrom.getHours() + ":" + datefrom.getMinutes();
// String endDate = dateto.getHours() + ":" + dateto.getMinutes();
if(datefrom.compareTo(checkToDate) == checkFromDate.compareTo(dateto))
{
overlapEvents = true;
count ++;
Log.d("count",String.valueOf(count));
}
}
Эта доза не поможет, так что я думал, что только сравнить часы и минуты дня. Моя попытка заключалась в часах и минутах от даты и сравнить их, это в комментариях. Но для этого нужна другая логика.
Может ли кто-нибудь помочь мне с этим, пожалуйста?
EDIT:
Как я снова сделал тест, я обнаружил, что если когда-то условие возвращает истинный, то во второй раз в течение другого периода времени, и это показывает, правда, хотя его не так.
Как и сейчас, у меня есть событие с 12:50 вечера по 1:50 вечера, и я попытался добавить еще одно событие времени 12:00 pm - 1:00 вечера, и это вернулось, счет равен 1. Это правильно ,
Но опять же, если я попытаюсь изменить время, не возвращаясь, не обновляя действие, я попытался изменить время с 12:00 до 12:30 для этого, и он вернул true, count равен 1, поскольку это не должно быть true, нет события этого периода времени.
Снова, если я вернусь и снова. Если я попытаюсь добавить событие с 12:00 до 12:30, оно вернется к ошибке, оно будет добавлено успешно. Теперь я не знаю, о чем идет речь?
Мне кажется, мне нужно обновить список, где хранятся сравниваемые события. Как я могу это сделать и где я должен это делать?
спасибо.
Пробуйте использовать функции формата даты, такие как .befor или .after или .equals. Я могу это помочь вам –
можно ли мне помочь мне через код? @RakshitNawani – Sid
Я тоже пробовал это - startDate1.before (endDate2) && startDate2.before (endDate1); – Sid