Учитывая длительность события, я хочу вернуть время начала и окончания, которые позволяют мне начинать и заканчивать событие между 2 часами. Например, предположим, что мое мероприятие началось 03.02.20 в 03:12 с продолжительностью 890280 с. Это должно закончиться 12/03/2020 23:48. Я хочу настроить конец так, чтобы и startTime, и endTime были, скажем, между 9:00 и 03:00.
Может кто-нибудь помочь, пожалуйста? Это то, что я сделал, но это не работает:
QDateTime Planning::calculateEndDate(QDateTime &startDateTime, qint64 duration)
{
QDateTime endDateTime;
QTime dayStart=QTime::fromString(startHour(),"hh:mm");
QTime dayEnd=QTime::fromString(endHour(),"hh:mm");
qint64 workTimePerDay=dayStart.secsTo(dayEnd);
if(duration <= startDateTime.time().secsTo(dayEnd)){
endDateTime=startDateTime.addSecs(duration);
return endDateTime;
}
else{
endDateTime=startDateTime.addSecs(duration);
if(isonWorkTime(endDateTime) && isWeekDay(endDateTime)){
return endDateTime;
}
else if(!isonWorkTime(endDateTime) && isWeekDay(endDateTime)){
}
}
}
Я рассчитываю рабочее время в день. Если оно уступает оставшемуся времени в workDay, мы добавляем его. Если нет, мы рассчитаем, добавив продолжительность. Если endDate находится в workDays и не в выходные, у нас хороший результат. Если нет, я не знаю, что нужно сделать, чтобы сдвинуть начало, чтобы иметь начало и конец рабочего времени.