ก่อนอื่นต้องแยกให้ออกก่อนครับ ว่าปีใดมี 365 วัน ปีใดมี 366 วัน
ปีที่มี 366 วัน (อธิกสุรทิน หรือ Leap Year) หากตรวจสอบจากปี คศ. คือปีที่
- หารด้วย 4 ลงตัว
- แต่หารด้วย 100 ไม่ลงตัว เว้นเสียแต่ว่า หารด้วย 400 ลงตัว
แต่เวลานำไปเขียนเป็นโปรแกรม หรือเล่นทายวันจากวันที่ในใจ ในช่วงปี คศ. บางช่วง ไม่จำเป็นต้องใช้เงื่อนไขครบถ้วน (มันกินแรง CPU เกินไป) เท่าที่พี่เคยตรวจสอบมาเป็นดังนี้
ถูกต้องในช่วงปี คศ. 2001 - 2339 เงื่อนไขคือ
- หารด้วย 4 ลงตัว
- แต่หารด้วย 100 ไม่ลงตัว
ถูกต้องในช่วงปี คศ. 1901 - 2099 เงื่อนไขคือ
อีกเรื่องหนึ่งที่จำเป็นต้องรู้คือ วันแรกของปี คศ. ตรงกับวันใด หาสูตรจากทฤษฏีจำนวนมาดู ก็จะพบว่า ให้หาค่าของ
\[ \left(Year + \left\lfloor \frac{Year - 1}{4} \right\rfloor - \left\lfloor \frac{Year - 1}{100} \right\rfloor + \left\lfloor \frac{Year-1}{400} \right\rfloor \right) \bmod 7 \]โดยหากได้ค่าเป็น
0 = อาทิตย์ , 1 = จันทร์ , 2 = อังคาร , 3 = พุธ , 4 = พฤหัสบดี , 5 = ศุกร์ , 6 = เสาร์
และเช่นเดียวกัน เวลานำไปเขียนเป็นโปรแกรม หรือเล่นทายวันจากวันที่ในใจ ในช่วงปี คศ. บางช่วง ไม่จำเป็นต้องใช้สูตรครบถ้วน (มันกินแรง CPU เกินไป) เท่าที่พี่เคยตรวจสอบมาเป็นดังนี้
ถูกต้องในช่วงปี คศ. 2001 - 2400 สูตรคือ
\[ \left(Year + \left\lfloor \frac{Year - 1}{4} \right\rfloor - \left\lfloor \frac{Year - 1}{100} \right\rfloor + 5 \right) \bmod 7 \]ถูกต้องในช่วงปี คศ. 1901 - 2100 สูตรคือ
\[ \left(Year + \left\lfloor \frac{Year - 1}{4} \right\rfloor + 6 \right) \bmod 7 \]
หลักๆก็มีแค่นี้ครับ ที่เหลือคำนวณเองได้ไม่ยากแล้ว ส่วนปฏิทินจันทรคติไม่เคยศึกษาครับ (โปรดอย่าถาม
)