เปรียบเทียบสองวันที่

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 เป็นประเภทเชิงคณิตศาสตร์ มีประโยชน์สำหรับการเปรียบเทียบ

ดูเพิ่มเติมที่: