C++:
เปรียบเทียบสองวันที่
วิธีการ:
C++ ทำให้ชีวิตง่ายขึ้นด้วยหัวข้อ <chrono>
#include <iostream>
#include <chrono>
#include <ctime>
int main() {
using namespace std::chrono;
// สร้างจุดเวลาของ system_clock
system_clock::time_point วันนี้ = system_clock::now();
system_clock::time_point วันหนึ่ง = system_clock::now() - hours(24); // เมื่อวาน
// แปลงเป็น time_t เพื่อเปรียบเทียบ
time_t วันนี้_time_t = system_clock::to_time_t(วันนี้);
time_t วันหนึ่ง_time_t = system_clock::to_time_t(วันหนึ่ง);
if (วันนี้_time_t > วันหนึ่ง_time_t) {
std::cout << "วันนี้หลังจากวันหนึ่ง\n";
} else if (วันนี้_time_t < วันหนึ่ง_time_t) {
std::cout << "วันนี้ก่อนวันหนึ่ง\n";
} else {
std::cout << "วันที่เหมือนกัน\n";
}
return 0;
}
ตัวอย่างผลลัพธ์:
วันนี้หลังจากวันหนึ่ง
ลึกลงไป:
ตั้งแต่ C++11, <chrono>
คือที่ทางสำหรับวันและเวลา ก่อนหน้านี้ คุณอาจต้องต่อสู้กับ <ctime>
และโครงสร้างเช่น tm
ไม่สวยหรูเลย
มีทางเลือกอื่นไหม? แน่นอน มีไลบรารีของบุคคลที่สามอย่าง Boost.DateTime แต่ทำไมต้องยุ่งยาก เมื่อ <chrono>
มีให้และเติบโตอยู่ตลอดเวลา
รายละเอียดการ实现ที่ควรจารึกไว้:
std::chrono
จัดการกับจุดเวลาและระยะเวลาsystem_clock
วัดเวลาในโลกแห่งความจริงtime_point
เป็นจุดเวลาที่เฉพาะเจาะจง (เช่น วันที่)time_t
เป็นประเภทเชิงคณิตศาสตร์ มีประโยชน์สำหรับการเปรียบเทียบ
ดูเพิ่มเติมที่:
- C++ Reference สำหรับ
<chrono>
: https://en.cppreference.com/w/cpp/header/chrono - การเปรียบเทียบของไลบรารีวันและเวลา: http://www.boost.org/doc/libs/1_64_0/doc/html/date_time.html
- หัวข้อเก่าดี
<ctime>
หากคุณรู้สึกถึงความคิดถึงหรือมาโซคิสต์: https://en.cppreference.com/w/cpp/header/ctime