Я искал некоторые темы по этому поводу, но все они кажутся довольно расплывчатыми.
У меня есть 4 строковые переменные, содержащие время, представляющее время начала и окончания 2-х событий в формате "17:30" или "01:20" и т.д.
Я хочу написать функцию, чтобы определить, столкнулись ли они или нет. Так что я ищу что-то вроде
string beginTime1 = "01:30";
string beginTime2 = "03:30";
string endTime1 = "01:30";
string endTime2 = "01:30";
time begin1, begin2, end1, end2;
begin1 = toTime(beginTime1);
begin2 = toTime(beginTime2);
end1 = toTime(endTime1);
end2 = toTime(endTime2);
If (begin2 > begin1 && begin2 < end1)
return clash;
Или что-то типа того.
У Boost Posix Time Library есть функция для получения значения posix_time из std::string
: from_string()
.
Что значит для двух событий "столкнуться"? Это происходит, когда один начинается до другого конца. Итак begin1 < end2 || begin2 < end1
begin1 < end2 || begin2 < end1
.
Если ваше время всегда форматируется как HH:MM
, нет необходимости конвертировать их в другой формат перед конвертированием, потому что лексикографический порядок уже правильный.