C++:
Porównywanie dwóch dat

How to (Jak to zrobić)

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

int main() {
    // Ustawiamy dwie daty
    std::tm date1 = {}; date1.tm_year = 120; date1.tm_mon = 4; date1.tm_mday = 15;
    std::tm date2 = {}; date2.tm_year = 121; date2.tm_mon = 4; date2.tm_mday = 15;

    // Konwersja na time_t
    std::time_t time1 = std::mktime(&date1);
    std::time_t time2 = std::mktime(&date2);

    // Porównywanie
    if (time1 < time2) {
        std::cout << "Data1 jest wcześniejsza niż Data2.\n";
    } else if (time1 > time2) {
        std::cout << "Data1 jest późniejsza niż Data2.\n";
    } else {
        std::cout << "Daty są identyczne.\n";
    }

    return 0;
}

Przykładowe wyjście:

Data1 jest wcześniejsza niż Data2.

Deep Dive (Głębsze spojrzenie)

Porównywanie dat w C++ może wykorzystywać wiele podejść. Zanim wprowadzono <chrono>, często korzystano z <ctime> i własnych funkcji. <chrono> daje silne typowanie i większą dokładność; od C++20 oferuje także wsparcie dla stref czasowych i kalendarzy.

Alternatywą jest również korzystanie z bibliotek zewnętrznych jak Boost.Date_Time, jeśli wymagane są bardziej zaawansowane operacje.

Ważne jest, aby zwrócić uwagę na szczegóły implementacyjne, takie jak różne sposoby przechowywania dat (np. liczba sekund od określonego punktu odniesienia, jak ’epoch’), strefy czasowe czy zmiany czasu (np. czas letni).

See Also (Zobacz również)