Leap year คืออะไร
ก่อนอื่นก็ต้องอธิบายก่อนว่า Leap year คือการบอกว่าในเดือนกุมภาพันธ์ในปีนั้นมีทั้งหมด 28 หรือ 29 วันนั่นเอง ตัวอย่างเช่น
ปี 2020 ถือเป็น Leap Year หรือปีอธิกสุรทิน คือปีที่มี 366 วัน ซึ่งจะเวียนมาทุกๆ 4 ปี โดยวันที่เพิ่มขึ้นมา 1 วัน คือวันที่ 29 กุมภาพันธ์ แล้ว Leap Year เกิดขึ้นได้อย่างไร ทำไมวันในแต่ละปีถึงไม่เท่ากัน?
โลกเคลื่อนที่ไปรอบดวงอาทิตย์ด้วยอัตราความเร็ว 30 กิโลเมตร ต่อวินาที และต้องใช้เวลารวมทั้งสิ้น 365 วันหรือ 1 ปี ซึ่งเรียกว่าปีปกติสุรทิน (Common Year) แต่ระยะเวลาจริงๆ นั้น ไม่ใช่ 365 วันพอดีเป๊ะ แต่เป็น 365 วัน 6 ชั่วโมง 9 นาที หรือ 365.2524 วัน
ดังนั้นส่วนที่เกินมา .25 วัน จึงถูกนำมานับรวมให้ทุกๆ 4 ปี มีวันเพิ่มขึ้นมา 1 วัน แทน .25 วันที่หายไปในแต่ละปี เพื่อให้การนับสอดคล้องกับตำแหน่งปรากฏของดวงอาทิตย์ โดยวันดังกล่าวถูกเพิ่มเข้าไปในเดือนกุมภาพันธ์ ซึ่งเป็นวันที่ 29 กุมภาพันธ์ (Leap Day)
จะสังเกตุได้ว่าปีไหนที่เดือนกุมภาพันธ์ที่มีจำนวนวัน 29 วันใน Social media ต่างๆ จะเห็นโพสกันว่ามีระบบ Bug ตรงนั้นตรงนี้บ้างนั่นก็เกิดจากการเขียนโค้ดของผู้พัฒนาที่ไม่ได้คำนึงถึงการเกิด Bug ตรงจุดนี้นั้นเอง
สำหรับใครที่หาฟังก์ชั่นในการคำนวณ Leap year อยู่นั้นเดี๋ยวผมจะแปะไว้ข้างล่างนี้ให้ครับ
(code ข้างล่างนี้เป็นภาษา PHP สามารถเอาไปปรับใช้ได้กับภาษาอื่นๆ ได้ครับ)
function checkLeapYear($year) { if ($year % '4' != '0') { return '28'; } elseif ($year % '100' != '0') { return '29'; // Leap year } elseif ($year % '400' != '0') { return 28; } else { return '29'; // Leap year } }