เดือนกุมภา ค.ศ. 1900 มีกี่วัน? และทำไมเราต้องสนใจคำถามนี้?

ปุจฉา1: เดือนกุมภาพันธ์ ปี ค.ศ.1900 มี 28 หรือ 29 วัน?
ปุจฉา2: ทำไมเราต้องสนใจคำถามนี้?

เราทราบกันดีว่า 1 ปี มี 365 วัน
แต่แท้จริงแล้ว 1 ปี มี 365 วัน 5 ชั่วโมง 48 นาที 46 วินาที
ถ้าแปลงเป็นตัวเลขคือ 365.2422 วัน

[ 0.2422 มาจากไหน? ]

มาจากการแปลง 5 ชั่วโมง 48 นาที 46 วินาที ให้เป็นหน่วยวัน
หรือคำนวณโดย

=5/24
+48/60/24
+46/60/60/24

=0.242199074

(ผมกดเครื่องคิดเลขให้แล้วครับ 🙂)

ในการทำปฏิทิน เราคงกำหนดให้ 1 ปี มี 365 วัน 5 ชั่วโมง 48 นาที 46 วินาทีไม่ได้
ไม่งั้นงงกันหมด 😅

เพื่อให้เข้าใจง่าย จึงกำหนดให้เดือนกุมภาพันธ์มี 29 วันในทุก ๆ 4 ปี โดยกำหนดให้เป็นปี ค.ศ. ที่หารด้วย 4 ลงด้ว (เช่น 2020, 2024, 2028)

แต่ด้วยความที่ 1 ปี มี 365.2422 ไม่ใช่ 365.25 วัน เพื่อให้คำนวณปฏิทินได้แม่นยำ จึงกำหนดให้เดือนกุมภาพันธ์มี 28 วัน ในปี ค.ศ. ที่หารด้วย 100 ลงตัว (เช่น 1900, 2100, 2200)
ยกเว้นปี ค.ศ. ที่หารด้วย 400 ลงตัว ที่เดือนกุมภาพันธ์จะมี 29 วัน (เช่น 2000, 2400, 2800)

ผมขอเรียกกฎข้อนี้ว่า ‘กฎ 400 ปี’ 🙂

ดังนั้น ปี ค.ศ. 1900 เดือนกุมภาพันธ์จึงมี 28 วัน (หารด้วย 400 ไม่ลงตัว)
ปี ค.ศ. 2000 เดือนกุมภาพันธ์มี 29 วัน (หารด้วย 400 ลงตัว)
ปี ค.ศ. 2100 เดือนกุมภาพันธ์มี 28 วัน (หารด้วย 400 ไม่ลงตัว)

เพิ่มเติม: เราเรียกปีที่เดือนกุมภาพันธ์มี 29 วันว่า ปีอธิกสุรทิน (Leap Year)

[ ทำไมเราต้องสนใจเดือนกุมภาพันธ์ ค.ศ. 1900? ]

เพราะโปรแกรม MS Excel กำหนดให้เลข 1 เทียบเท่าวันที่ 1 มกราคม ค.ศ. 1900
แต่ไม่ได้คำนึงถึงกฎ 400 ปี (ในตอนแรก)

ดังนั้นเลข 1 ใน MS Excel เทียบเท่าวันที่ 1 มกราคม ค.ศ. 1900
เลข 60 เทียบเท่าวันที่ 29 กุมภาพันธ์ ค.ศ 1900
ซึ่งถือว่าผิด เพราะวันที่ 29 กุมภาพันธ์ 1900 ไม่มีอยู่จริง!
(31 + 29 = 60)
(เลข 60 ควรจะเทียบเท่าวันที่ 1 มีนาคม ค.ศ. 1900)

ยังดีที่ตอนหลังไมโครซอฟท์ไหวตัวเรื่องนี้ทัน จึงนำกฎ 400 ปีมาใช้

แต่ปัญหาคือ ไมโครซอฟท์คงไปแก้ให้เลข 60 เทียบเท่าวันที่ 1 มีนาคม ค.ศ. 1900 ไม่ได้แล้ว (ไม่งั้นจะมีปัญหาตามมาเป็นหางว่าว) จึงต้องปล่อยเลยตามเลย

Google Sheet และ Power BI เล็งเห็นปัญหานี้ จึงนำกฎ 400 ปีมาใช้ตั้งแต่ต้น

ปัญหาคือ ถ้า Google Sheet กำหนดให้เลข 1 เทียบเท่าวันที่ 1 มกราคม ค.ศ. 1900 และเดือนกุมภาพันธ์ ค.ศ. 1900 มี 28 วัน
การเทียบวันที่กับ MS Excel จะมีปัญหาแน่นอน

เพื่อเป็นการแก้ปัญหา Google Sheet และ Power BI จึงกำหนดให้เลข 1 เทียบเท่าวันที่ 31 ธันวาคม ค.ศ. 1899 แทน
และยังคงกำหนดให้เดือนกุมภาพันธ์ ค.ศ. 1900 มี 28 วัน (ตามกฎ 400 ปี)

แปลว่าถ้าแปลงตัวเลข 1-60 เป็นวันที่ ผลลัพธ์ที่ได้จาก MS Excel กับ Google Sheet (และ Power BI) จะไม่ตรงกัน
(แต่วันที่หลังจากนั้นไม่มีปัญหา)

เรื่องมันก็เป็นเช่นนี้แล..

อาจไม่ใช่เรื่องใหญ่ แต่เป็นเกร็ดที่น่าสนใจ จึงหยิบมาเล่าให้ฟังครับ 😊

Source: https://www.grc.nasa.gov/www/k-12/Numbers/Math/Mathematical_Thinking/calendar_calculations.htm

วิศวกรรีพอร์ต

คนธรรมดาผู้มีประสบการณ์ทำงานหลากหลายตำแหน่ง คลุกคลีกับการทำรีพอร์ตมาโดยตลอด สุดท้ายค้นพบแนวทางของตัวเอง จึงอยากแบ่งปันเคล็ดลับและประสบการณ์ให้กับผู้สนใจ

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.