Ваше исправление отлично работает, чтобы получить количество целых 24-часовых периодов между двумя периодами, если события происходят в одно и то же время каждый день. В противном случае «+1» в выражении может привести к ошибке «один за другим».
Иногда вас не волнует, в какое время дня произошло событие, вы просто хотите знать, в какой день. В этом случае вам нужно обнулить часы, минуты и секунды, а затем использовать формулу:
CTime startDay(start.GetYear(), start.GetMonth(), start.GetDay(), 0, 0, 0);
CTime finishDay(finish.GetYear(), finish.GetMonth(), finish.GetDay(), 0, 0, 0);
int days = ((finishDay - startDay).GetTotalHours() + 1) / 24;