การคำนวณปีที่เดือนกุมภาพันธ์มี 29 วัน

February 29ผ่านเดือนกุมภาพันธ์ของปี 2555 มาร่วม 15 วันละ.. เลยอยากจะรู้ว่า ปีไหนที่เดือนกุมภาพันธ์มี 29 วันบ้างนะ (ภาษาไทยเรียกว่า ปีอธิกสุรทิน)

ตามที่เรารู้ๆ กันคือ ทุกๆ 4 ปีนั้น เดือนกุมภาพันธ์จะมี 29 วัน ซึ่งความจริงก็ถูกต้อง แต่ไม่ทั้งหมด เนื่องจากในแต่ละปีนั้น โลก (The Earth) ของเรานั้น หมุนรอบวงโคจรของตัวเอง เป็นระยะเวลา 365.242374 วัน (1 ปีกับอีก 5 ชั่วโมง 49 นาที 12 วินาที) แต่ในทางปฏิบัตินั้น เราอนุมานกันเอาว่า 1 ปีเท่ากับ 365 วัน (โดยปกติ) แต่ความเป็นจริงแล้ว ในส่วนที่มันเกินๆ มานี่ล่ะ ที่ทำให้เกิดความคลาดเคลื่อนเกิดขึ้น หากไม่มีการแก้ไขให้ถูกต้อง จะทำให้ฤดูกาล และเทศกาลบางอย่างผิดเพี้ยนไป (เช่น เทศกาลอีสเตอร์)

ดังนั้น เหล่าบรรดานักวิทยาศาสตร์ นักดาราศาสตร์ นักคณิตศาสตร์ นักกฎหมาย นักการเมือง และแต่ละนักที่อยากเข้ามาเกี่ยวข้อง ก็ร่วมกันกำหนดให้ชดเชยวันที่ขาดหายไปเป็นวันที่ 29 กุมภาพันธ์ โดยประวัติศาสตร์การสังคายนาปฏิทินนั้นมีมานานมากๆ ตั้งแต่ยุคจูเลียส ซีซาร์ (46 ปีก่อนคริสตกาล) เรียกว่า Julian Calendar แต่ต่อมาก็มีปรับกันอีกหลายหนจนกระทั่งยุคของสมเด็จพระสันตปาปาเกรกอรี่ที่ 13 (Pope Gregory XIII) ปรับปรุงใหม่จนได้ปฏิทินที่เรียกว่า Gregorian Calendar ดังเช่นปัจจุบัน

เอาล่ะ หลังจากอารัมภบทประวัติศาสตร์ของปฏิทินกันมามาก..

แล้วความจริงแล้ว เราควรจะคำนวณยังไงล่ะ ? ว่าปีไหนควรจะมีวันที่ 29 กุมภาพันธ์หรือไม่มี..

คำตอบนี้ ต้องอ้างอิงตามคาบการโคจรของโลกเราเอง ที่มีค่าอยู่ประมาณ 365.242374 วัน.. ดังนั้นแล้ว โดยมากจะคำนวณโดย ทุกๆ 4 ปี ก็ได้แต่เนื่องจากมันจะขาดๆ หายๆ ไปบ้างเนื่องจากส่วนที่เกิน 365 วันนั้น มันมีค่าไม่ถึง 1 ใน 4 ของวัน ดังนั้นก็คำนวณต่อว่า ปีนั้นทำการหารด้วย 100 ลงตัวหรือไม่? ถ้าหารไม่ลงตัว ก็จะเป็นปี Leap Year ถ้าไม่ใช่ ก็มาดูกันต่อว่า ปีนั้นทำการหารด้วย 400 ลงตัวหรือไม่ ? ถ้าใช่ ก็เป็นปี Leap Year

โดยหลักการเขียนโค้ดในการคำนวณนั้น จะเป็นดังนี้

หมายเหตุ: โค้ดด้านบนเป็นภาษา PHP

ยกตัวอย่าง: ปีนี้ 2012 เป็นปีอธิกสุรทิน คือ เดือนกุมภาพันธ์ มี 29 วัน ดังนั้น ถ้านับไปเรื่อยๆ ทุกๆ 4 ปี ก็จะต้องมีวันที่ 29 กุมภาพันธ์ทุกๆ 4 ปี ซึ่งกรณีนี้ ใช้ได้เรื่อยๆ จนกระทั่งปี 2100 (อีก 88 ปีข้างหน้า) ซึ่ง 2100/4 ลงตัวแน่นอน และ 2100/100 ก็ลงตัวแน่นอน แต่ 2100/400 ไม่ลงตัว (ผลลัพธ์คือ 5.25) คือมีเศษ ดังนั้น ปี ค.ศ.2100 จะมีแค่วันที่ 28 กุมภาพันธ์เท่านั้น (ไม่เชื่อลองเปิดปฏิทินดู)