Порівняння двох дат

C++:
Порівняння двох дат

Як це зробити:

#include <iostream>
#include <chrono>
#include <iomanip>

int main() {
    // Встановлення двох дат
    std::tm tm1 = {};
    std::tm tm2 = {};
    strptime("2023-03-15", "%Y-%m-%d", &tm1);
    strptime("2023-03-20", "%Y-%m-%d", &tm2);

    // Конвертація в time_point
    std::chrono::system_clock::time_point tp1 = std::chrono::system_clock::from_time_t(mktime(&tm1));
    std::chrono::system_clock::time_point tp2 = std::chrono::system_clock::from_time_t(mktime(&tm2));

    // Порівняння дат
    if (tp1 < tp2)
        std::cout << "Перша дата раніше другої." << std::endl;
    else if (tp1 > tp2)
        std::cout << "Перша дата пізніше другої." << std::endl;
    else
        std::cout << "Дати однакові." << std::endl;
    
    return 0;
}

Вивід:

Перша дата раніше другої.

Поглиблений огляд:

Історія: Порівняння дат – стара проблема в комп’ютерних науках. Спочатку це було здійснено через операції зі строками або числами.

Альтернативи: Існують бібліотеки, як boost::date_time чи старі методи std::mktime і std::difftime, але std::chrono є засобом сучасного C++, який запроваджений для стандартної бібліотеки.

Деталі реалізації: std::chrono використовує точні часові точки (time_points) для представлення моментів у часі та тривалостей (durations). Це дозволяє зробити порівняння точними та безпечними для типів.

Дивись також: