การแปลงวันที่เป็นสตริง

C++:
การแปลงวันที่เป็นสตริง

วิธีทำ:

ใน C++ สมัยใหม่, ไลบรารี <chrono> และ <iomanip> เป็นเพื่อนซี้สำหรับการดำเนินการวันเวลา นี่คือวิธีการรวดเร็วโดยใช้ std::put_time:

#include <iostream>
#include <iomanip>
#include <chrono>
#include <sstream>

int main() {
    auto now = std::chrono::system_clock::now(); // รับเวลาปัจจุบัน
    auto time = std::chrono::system_clock::to_time_t(now); // แปลงเป็น time_t
    
    // แปลงเป็นโครงสร้าง tm เพื่อการจัดรูปแบบ
    std::tm tm = *std::localtime(&time);

    // สตรีมสตริงสำหรับออกผล
    std::stringstream ss;

    ss << std::put_time(&tm, "%Y-%m-%d %H:%M:%S"); // รูปแบบ: ปี-เดือน-วัน ชั่วโมง:นาที:วินาที

    std::string date_str = ss.str(); // แปลงเป็นสตริง

    std::cout << date_str << std::endl; // แสดงผลสตริงวันที่
    return 0;
}

ผลลัพธ์ตัวอย่าง (ขึ้นอยู่กับวันเวลาปัจจุบัน):

2023-03-15 14:25:30

ลึกลงไป

ก่อนที่ <chrono> จะถูกนำมาใช้, โปรแกรมเมอร์ C++ มักต้องดิ้นรนกับการจัดการเวลาแบบ C ผ่าน <ctime> ซึ่งมีความน้อยชัดและมีโอกาสผิดพลาดมากขึ้นเนื่องจากการจัดการหน่วยความจำด้วยตนเองและความประหลาดที่เฉพาะตามแพลตฟอร์ม

ทางเลือกอื่น ๆ สำหรับ std::put_time รวมถึงการใช้ strftime, แต่นั่นเป็นสไตล์มากกว่า C. ไลบรารีของบุคคลที่สามเช่น Boost.Date_Time สามารถเสนอฟังก์ชั่นเพิ่มเติมในราคาที่ต้องเพิ่มการพึ่งพิง

รายละเอียดสำคัญในการประยุกต์ใช้คือการเข้าใจตัวกำหนดรูปแบบใน std::put_time, ซึ่งคล้ายกับที่ใช้ใน strftime คุณกำลังจับคู่ตัวยึดที่ว่างเปล่ากับส่วนประกอบของวันหรือเวลา - %Y สำหรับปีเต็ม, %m สำหรับเดือน, และอื่น ๆ

ดูเพิ่มเติม