C:
การแยกวันที่ออกจากสตริง
วิธีการ:
C ไม่มีวิธีที่ในตัวเองในการแยกวิเคราะห์วันที่จากสตริงโดยตรง ดังนั้นเราบ่อยครั้งจึงต้องหันไปใช้ฟังก์ชัน strptime
ที่มีอยู่ในไลบรารี <time.h>
สำหรับระบบ POSIX ฟังก์ชันนี้ทำให้เราสามารถระบุรูปแบบที่คาดหวังของสตริงนำเข้าและแยกวิเคราะห์เข้าไปใน struct tm
ซึ่งแสดงถึงวันที่และเวลาของปฏิทินที่แยกออกเป็นส่วนประกอบ
นี่คือตัวอย่างง่ายๆ ของวิธีการใช้ strptime
เพื่อแยกวิเคราะห์วันที่จากสตริง:
#include <time.h>
#include <stdio.h>
int main() {
const char *dateStr = "2023-04-01";
struct tm tm;
char buf[255];
// การแยกวิเคราะห์สตริงวันที่เข้าไปใน struct tm
if (strptime(dateStr, "%Y-%m-%d", &tm) == NULL) {
printf("Failed to parse date.\n");
} else {
// การใช้ strftime เพื่อพิมพ์วันที่ในรูปแบบที่อ่านง่าย
strftime(buf, sizeof(buf), "%A, %B %d, %Y", &tm);
printf("Parsed date: %s\n", buf);
}
return 0;
}
ผลลัพธ์จากโปรแกรมนี้จะเป็น:
Parsed date: Saturday, April 01, 2023
สิ่งสำคัญคือต้องจัดการกับข้อผิดพลาดที่อาจเกิดขึ้น เช่น strptime
ที่ล้มเหลวในการจับคู่รูปแบบหรือพบกับข้อมูลนำเข้าที่ไม่คาดคิด
การศึกษาลึก
ฟังก์ชัน strptime
แม้จะมีประสิทธิภาพ แต่ไม่ได้เป็นส่วนหนึ่งของไลบรารีมาตรฐานของภาษา C และพบได้ส่วนใหญ่ในระบบที่เข้ากันได้กับ POSIX เช่น Linux และ UNIX ข้อจำกัดนี้หมายความว่าโปรแกรมที่พึ่งพา strptime
สำหรับการแยกวิเคราะห์วันที่จากสตริงอาจไม่สามารถใช้งานได้กับระบบที่ไม่ใช่ POSIX เช่น Windows โดยไม่ต้องมีชั้นความเข้ากันได้เพิ่มเติมหรือไลบรารี
ในอดีตการจัดการวันที่และเวลาในภาษา C ต้องใช้การจัดการและความรอบคอบมากมายโดยเฉพาะเมื่อพิจารณาถึง locales และเขตเวลาที่แตกต่างกัน ทางเลือกและส่วนขยายสมัยใหม่ของภาษา C เช่นไลบรารี <chrono>
ของภาษา C++ และไลบรารีของบุคคลที่สามเช่นไลบรารีวันที่ของ Howard Hinnant สำหรับภาษา C++ นำเสนอโซลูชันที่มีความแข็งแกร่งมากขึ้นสำหรับการจัดการวันที่และเวลา รวมถึงการแยกวิเคราะห์ ไลบรารีเหล่านี้มักจะให้การสนับสนุนที่ดีกว่าสำหรับรูปแบบวันที่เขตเวลาและกลไกการจัดการข้อผิดพลาดที่หลากหลาย ทำให้พวกเขาเป็นทางเลือกที่น่าสนใจสำหรับโปรเจคใหม่ที่ต้องการความสามารถในการจัดการวันที่และเวลาอย่างกว้างขวาง
อย่างไรก็ตาม การเข้าใจวิธีการแยกวิเคราะห์วันที่จากสตริงในภาษา C อาจเป็นประโยชน์ เฉพาะเมื่อทำงานกับหรือดูแลโครงการที่ต้องการความเข้ากันได้กับระบบที่เครื่องมือสมัยใหม่เหล่านี้ไม่พร้อมใช้งานหรือเมื่อทำงานภายใต้ข้อจำกัดของสภาพแวดล้อมการโปรแกรมภาษา C ที่เข้มงวด