C++:
Kahden päivämäärän vertailu
How to: (Kuinka Tehdään:)
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
// Alustetaan kaksi päivämäärää
std::chrono::system_clock::time_point today = std::chrono::system_clock::now();
std::chrono::system_clock::time_point deadline = today + std::chrono::hours(72); // 3 päivän päästä
// Vertaillaan päivämääriä
if (today < deadline) {
std::cout << "Aikaa on jäljellä." << std::endl;
} else {
std::cout << "Määräaika on umpeutunut." << std::endl;
}
// Tulostetaan päivämäärät
std::time_t today_time = std::chrono::system_clock::to_time_t(today);
std::time_t deadline_time = std::chrono::system_clock::to_time_t(deadline);
std::cout << "Tänään on: " << std::ctime(&today_time);
std::cout << "Määräaika on: " << std::ctime(&deadline_time);
return 0;
}
Esimerkkitulos:
Aikaa on jäljellä.
Tänään on: Wed Mar 3 10:05:26 2023
Määräaika on: Sat Mar 6 10:05:26 2023
Deep Dive (Sukellus Syvyyksiin):
Päivämäärävertailu on ollut tietokonemaailman perustehtäviä alusta alkaen. Historiallisesti päivämääriä on hallittu monella tavalla, alkaen yksinkertaisista kokonaislukuesityksistä sekunnin murto-osineen (UNIX-aikaleima) nykyisiin monimutkaisempiin kirjastoihin kuten std::chrono
C++:ssa. std::chrono
tarjoaa tyypiturvallisen tavan käsitellä aikaa ja päivämääriä, joka vähentää virheiden määrää.
Vaihtoehtoja std::chrono
:lle ovat esimerkiksi vanhemmat C-kirjastot (kuten time.h
) tai kolmannen osapuolen kirjastot, kuten Boost.Date_Time. Kuitenkin std::chrono
on nykyaikainen valinta ja sen käyttöä suositellaan sen turvallisuuden ja joustavuuden vuoksi.
Toteutuksen yksityiskohtiin kuuluu aikavyöhykkeiden, kesäaikaan siirtymisen ja kalenteristandardien tunteminen. Nämä seikat voivat vaikuttaa päivämäärien vertailuun ja tulkitsemiseen.
See Also (Katso Myös):
- C++ standardikirjaston
std::chrono
: https://en.cppreference.com/w/cpp/chrono - Boost.Date_Time-kirjasto: https://www.boost.org/doc/libs/1_75_0/doc/html/date_time.html
- UNIX-aikaleiman ymmärtäminen: https://en.wikipedia.org/wiki/Unix_time
- Aikavyöhykkeiden käsittely C++:ssa: https://en.cppreference.com/w/cpp/chrono/c/tzdb