บทความทั้งหมด

ผลต่างวันที่: เหตุใดการนับวันจึงซับซ้อนกว่าที่คิด

ในประเทศไทย ปี พ.ศ. 2567 คือปี ค.ศ. 2024 — ปีพุทธศักราชนำหน้าคริสต์ศักราชอยู่เสมอ 543 ปี เอกสารราชการไทยส่วนใหญ่ยังใช้ พ.ศ. ในขณะที่ระบบและ API ต่างประเทศใช้ ค.ศ. เกือบทั้งหมด หากแปลงปีผิดแม้เพียงตัวเลขเดียว ผลต่างระหว่างวันที่ที่คำนวณได้ก็จะคลาดเคลื่อนไปหลายร้อยปีทันที

พ.ศ. กับ ค.ศ. ต้องแปลงก่อนคำนวณเสมอ

สูตรแปลงคือ พ.ศ. = ค.ศ. + 543 เช่น 5 มีนาคม 2567 ตรงกับ 5 มีนาคม ค.ศ. 2024 หากนำตัวเลขปีจากแบบฟอร์มราชการ (พ.ศ.) ไปลบกับวันที่จากระบบต่างประเทศ (ค.ศ.) โดยตรงโดยไม่แปลงก่อน ผลลัพธ์จะผิดพลาดไปประมาณ 543 ปีทันที ซึ่งมักสังเกตเห็นได้ง่ายกว่าความผิดพลาดเรื่องรูปแบบวันที่อื่น ๆ แต่ก็ยังคงเป็นจุดที่พลาดกันบ่อย

รูปแบบวันที่ DD/MM/YYYY กับ MM/DD/YYYY

ในไทยเขียนวันที่โดยขึ้นต้นด้วยวัน เช่น 05/03/2567 หมายถึงวันที่ 5 มีนาคม แต่ในสหรัฐอเมริกาสตริงแบบเดียวกันอย่าง 05/03/2024 จะหมายถึงวันที่ 3 พฤษภาคม เพราะเขียนเดือนนำหน้า การอ่านวันที่จากระบบต่างประเทศด้วยความเข้าใจแบบไทยอาจทำให้ผลต่างวันที่ผิดไปหลายสัปดาห์โดยไม่มีข้อผิดพลาดของโค้ดเกิดขึ้นเลย

เขตเวลาและขอบเขตของวัน

หากวันที่มีเวลาของวันรวมอยู่ด้วย ความแตกต่างของเขตเวลาอาจทำให้ผลการนับวันเปลี่ยนไปหนึ่งหน่วย: เวลา 23:30 น. ที่กรุงเทพฯ และ 17:30 น. ในเวลาเดียวกันที่ลอนดอนอาจตกอยู่ในวันปฏิทินที่ต่างกัน ขึ้นอยู่กับเขตเวลาที่ใช้นับ

ทำไมต้องใช้สิ่งนี้

  • คำนวณจำนวนวันที่แน่นอนจนถึงกำหนดส่งหรือนับจากวันที่เริ่มโปรเจกต์
  • ตรวจสอบว่าสัญญาเช่า การสมัครสมาชิก หรือการรับประกันยังมีผลอยู่หรือไม่
  • จับข้อผิดพลาดจากการแปลง พ.ศ./ค.ศ. หรือรูปแบบวันที่ผิด ก่อนที่มันจะทำรายงานพัง

ทำไม "ผลต่างเป็นเดือน" จึงไม่มีคำตอบที่ถูกต้องเพียงหนึ่งเดียว

หากลบหนึ่งเดือนจากวันที่ 31 มีนาคม ผลลัพธ์จะไม่ชัดเจน — ไม่มีวันที่ 31 กุมภาพันธ์ ดังนั้นบางระบบจะปัดเป็นวันที่ 28 กุมภาพันธ์ ในขณะที่บางระบบเลื่อนวันที่เกินไปเป็นวันที่ 3 มีนาคม ทั้งสองแนวทางมีเหตุผลในตัวเอง แต่ให้คำตอบต่างกัน ซึ่งควรนึกถึงเมื่อผลลัพธ์ไม่ตรงกับเครื่องมืออื่น

ลองใช้เครื่องมือ