C:
เปรียบเทียบสองวันที่
วิธีการ:
ภาษา C ไม่มีประเภทที่สร้างมาเพื่อเก็บวันที่โดยเฉพาะ จึงจำเป็นต้องใช้ไลบรารี time.h
เพื่อทำงานกับโครงสร้างวันที่และเวลา โครงสร้าง tm
และฟังก์ชัน difftime()
มักถูกใช้ในการเปรียบเทียบวันที่ ด้านล่างเป็นตัวอย่างที่แสดงวิธีการเปรียบเทียบวันที่สองวัน:
#include <stdio.h>
#include <time.h>
int main() {
struct tm date1 = {0};
struct tm date2 = {0};
double seconds;
// วันที่แรก (ปี, เดือน, วัน)
date1.tm_year = 2023 - 1900; // ปีนับตั้งแต่ 1900
date1.tm_mon = 3 - 1; // เดือน [0-11]
date1.tm_mday = 15; // วันของเดือน [1-31]
// วันที่สอง (ปี, เดือน, วัน)
date2.tm_year = 2023 - 1900;
date2.tm_mon = 4 - 1;
date2.tm_mday = 14;
// แปลงเป็นรูปแบบ time_t
time_t time1 = mktime(&date1);
time_t time2 = mktime(&date2);
// เปรียบเทียบ
seconds = difftime(time1, time2);
if (seconds == 0) {
printf("วันที่เหมือนกัน\n");
} else if (seconds > 0) {
printf("วันที่แรกมาหลังจากวันที่สอง\n");
} else {
printf("วันที่แรกมาก่อนวันที่สอง\n");
}
return 0;
}
ผลลัพธ์ที่อาจได้รับ:
วันที่แรกมาก่อนวันที่สอง
โปรแกรมนี้เริ่มต้นโดยตั้งค่าโครงสร้าง tm
สองตัวด้วยวันที่ที่เฉพาะเจาะจง แปลงเป็นรูปแบบ time_t
โดยใช้ mktime()
, และสุดท้ายเปรียบเทียบกันโดยใช้ difftime()
, ซึ่งคืนค่าความแตกต่างเป็นวินาที (เป็น double
) ระหว่างสองเวลา
ศึกษาเพิ่มเติม
ในช่วงแรกๆ ของภาษา C, การดำเนินการเกี่ยวกับวันที่และเวลาต้องทำการคำนวณด้วยตนเอง บ่อยครั้งที่ต้องคำนึงถึงปีอธิกสุรทิน, จำนวนวันที่แตกต่างกันของเดือน, และแม้กระทั่งวินาทีอธิกสุรทิน การนำเสนอ time.h
ในมาตรฐาน ANSI C ทำให้มีการมาตรฐานในการจัดการเวลาในภาษา C, ทำให้การดำเนินการเกี่ยวกับวันที่และเวลาเป็นเรื่องง่ายขึ้น
การใช้ time.h
สำหรับการเปรียบเทียบวันที่ค่อนข้างตรงไปตรงมาแต่มีข้อจำกัด โครงสร้าง tm
ไม่ได้คำนึงถึงเขตเวลาหรือการประหยัดแสงตามฤดูกาล, และ difftime()
มีเพียงให้ความแตกต่างในวินาทีเท่านั้น, ไม่สามารถให้ความละเอียดลึกลงไปได้ในบางแอปพลิเคชัน
สำหรับแอปพลิเคชันที่ต้องการการดำเนินการวัน-เวลาที่มั่นคงยิ่งขึ้น รวมถึงการรองรับเขตเวลา, การเปลี่ยนแปลงตามฤดูกาล, และช่วงเวลาที่แม่นยำยิ่งขึ้น, ไลบรารีเช่น date.h
(ไลบรารีวันที่ของ Howard Hinnant, ไม่ได้เป็นส่วนหนึ่งของไลบรารีมาตรฐาน) นำเสนอทางเลือกสมัยใหม่แก่ time.h
ไลบรารีเหล่านี้มอบเครื่องมือที่ครอบคลุมยิ่งขึ้นสำหรับการจัดการวัน-เวลาในภาษา C++, ได้รับประโยชน์จากการพัฒนาของภาษาโปรแกรมมิ่งเป็นเวลาหลายทศวรรษ สำหรับโปรแกรมเมอร์ภาษา C, การใช้ไลบรารีภายนอกเหล่านี้หรือการจัดการความซับซ้อนของการคำนวณวัน-เวลาโดยตรงยังคงเป็นสิ่งจำเป็นเพื่อการจัดการวัน-เวลาที่แม่นยำและตระหนักถึงวั Culturally aware date-time manipulation.