C++:
Twee datums vergelijken
Hoe:
C++ maakt het leven makkelijk met de <chrono> header.
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
using namespace std::chrono;
// Maak system_clock tijdpunten
system_clock::time_point vandaag = system_clock::now();
system_clock::time_point eenDag = system_clock::now() - hours(24); // Gisteren
// Omzetten naar time_t voor vergelijking
time_t vandaag_time_t = system_clock::to_time_t(vandaag);
time_t eenDag_time_t = system_clock::to_time_t(eenDag);
if (vandaag_time_t > eenDag_time_t) {
std::cout << "Vandaag is na eenDag.\n";
} else if (vandaag_time_t < eenDag_time_t) {
std::cout << "Vandaag is voor eenDag.\n";
} else {
std::cout << "Data zijn hetzelfde.\n";
}
return 0;
}Voorbeelduitvoer:
Vandaag is na eenDag.Diepgaand:
Sinds C++11 is <chrono> de plaats voor datum en tijd. Daarvoor was je waarschijnlijk aan het worstelen met <ctime> en structuren zoals tm. Niet mooi.
Alternatieven? Zeker, er zijn bibliotheken van derden zoals Boost.DateTime. Maar waarom het ingewikkeld maken als <chrono> er direct is en evolueert.
Implementatiedetails om in je achterzak te houden:
std::chronogaat om tijdpunten en duur.system_clockmeet de echte wereldtijd.time_pointis een specifiek punt in tijd (bijv. een datum).time_tis een rekenkundig type, handig voor vergelijkingen.
Zie ook:
- C++ Referentie voor
<chrono>: https://en.cppreference.com/w/cpp/header/chrono - Vergelijking van datum- en tijdbibliotheken: http://www.boost.org/doc/libs/1_64_0/doc/html/date_time.html
- Goede oude
<ctime>, als je nostalgisch of masochistisch bent: https://en.cppreference.com/w/cpp/header/ctime