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
สำหรับเดือน, และอื่น ๆ