Confronto tra due date

C++:
Confronto tra due date

How to:

C++20 introduce <chrono> con facilmente usabili year_month_day, che rende il confronto di date chiaro.


#include <iostream>
#include <chrono>
#include <format>

using namespace std;
using namespace std::chrono;

int main() {
    year_month_day data1 = 2023y/3/15;
    year_month_day data2 = 2023y/6/10;

    if (data1 < data2) {
        cout << format("La data {} viene prima di {}.\n", data1, data2);
    } else if (data1 > data2) {
        cout << format("La data {} viene dopo {}.\n", data1, data2);
    } else {
        cout << "Le date sono uguali.\n";
    }

    return 0;
}

Output:

La data 2023-03-15 viene prima di 2023-06-10.

Deep Dive:

Comparare date è un problema old as time (letteralmente). Prima di C++20, avremmo usato <ctime> o librerie esterne come Boost.DateTime. Ma ora, <chrono> ci dà gli strumenti per gestire tempo e date nel moderno C++.

Le alternative a <chrono> includono la vecchia <ctime> o librerie di terze parti, ma <chrono> vince per pulizia e integrazione con il linguaggio.

Il confronto tra year_month_day è supportato naturalmente grazie a operatori logici. È ben definito e non dovrai gestire conversioni o calcoli manuali. Fai solo attenzione a fusi orari e calendari diversi che <chrono> non gestisce nativamente.

See Also:

C++ Reference su <chrono>: https://en.cppreference.com/w/cpp/chrono Tutorial su <chrono>: https://www.modernescpp.com/index.php/c-20-the-calendar-and-time-zones