У меня есть функция, называемая int differenceDatesInDays(string& date)
. Эта функция должна получать строковое значение как дату (ГГГГ-ММ-ДД) и сравнивать его с сегодняшней датой.C++ Дни между данной датой и сегодняшней датой
Я не знаю, есть ли что-то внутри STL, я не смог найти соответствующий алгоритм. Я только узнал, что у boost есть решение для этого, но я не хочу использовать boost.
Итак, это мой код до сих пор:
int differenceDatesInDays(string& date) {
string year = date.substr(0, 4);
string month = date.substr(5,2);
string day = date.substr(8, string::npos);
int y = stoi(year);
int m = stoi(month);
int d = stoi(day);
time_t time_now = time(0);
tm* now = localtime(&time_now);
int diffY = y - (now->tm_year + 1900);
int diffM = m - (now->tm_mon + 1);
int diffD = d - (now->tm_mday);
int difference = (diffY * 365) + (diffM * 30) + diffD;
return difference;
}
Я не знаю, как узнать, если в месяце 30, 31 или 28 дней.
Есть только 12 месяцев, поэтому вы можете настроить массив const, который хранит дни каждого месяца. Индексируйте его к месяцу. Для февраля, который обычно имеет 28 дней, вам нужно будет определить, является ли это високосным годом, и в этом случае он имеет 29 дней. –