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