วิธีตรวจสอบความถูกต้องของการคำนวณปฏิทินจีน

วันที่อ้างอิง

ตรวจสอบการแปลงวันที่จันทรคติ เวลาสารทฤดู การจัดประเภทในปฏิทินฤกษ์จีน และการทำงานของส่วนติดต่อผู้ใช้แยกกัน ความตรงกันในส่วนหนึ่งไม่ได้ยืนยันว่าส่วนอื่นถูกต้อง ชุดการตรวจสอบที่มีประโยชน์ควรมีทั้งขอบเขตเดือน ขอบเขตปี และวันที่ภายในเดือน

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

Atlas รองรับวันที่พลเรือนตั้งแต่ ค.ศ. 1 ถึง 2100 กลไกคำนวณที่ตรึงรุ่นไว้ใช้ วันที่พลเรือนแบบจูเลียนถึง 1582-10-04 แล้วตามด้วยเกรกอรี 1582-10-15 วันที่ 5 ตุลาคมถึง 14 ตุลาคมไม่ปรากฏในลำดับวันที่พลเรือนนี้ การเปรียบเทียบกับการขยายปฏิทินเกรกอรีย้อนกลับไปก่อนเริ่มใช้จริง ซึ่งเรียกว่า ปฏิทินเกรกอรีแบบย้อนหลัง เป็นการทดสอบการจับคู่วันที่ยุคต้นอีกแบบหนึ่ง

ข้อตกลงนี้อธิบายตัวระบุวันที่พลเรือนของซอฟต์แวร์ ไม่ได้ยืนยันว่าในประวัติศาสตร์จีนใช้ปฏิทินใด ให้ทดสอบวันแรกและวันสุดท้ายที่รองรับ รวมทั้งวิธีจัดการวันที่นอกขอบเขต ช่วงวันที่พลเรือนยังต่างจากช่วงปีจันทรคติเต็มปี ซึ่งมีขอบเขตตรงกับคนละวัน

เก็บแต่ละผลลัพธ์ให้ครบทั้ง วันที่พลเรือนและข้อตกลงปฏิทิน ปีจันทรคติ หมายเลขเดือนจันทรคติ ค่าสถานะอธิกมาส และวันจันทรคติ แยกหมายเลขเดือนออกจากลำดับที่ของเดือนในปี เดือนอธิกมาสที่หกเป็นเดือนลำดับที่เจ็ดตามเวลา แต่หมายเลขเดือนยังเป็นหก

กรณีทดสอบ

การตรวจวันที่ด้วยผลคาดหมายที่แน่นอน

วันที่เหล่านี้ครอบคลุมตรุษจีน วันเพิ่มในปีอธิกสุรทินเกรกอรีที่มีอยู่จริง และปลายทั้งสองด้านของเดือนจันทรคติปกติกับเดือนอธิกมาส ในตารางนี้ เลขกำกับปีจันทรคติคือปีเกรกอรีที่ปีจันทรคตินั้นเริ่ม “ปกติ” หมายถึงค่าสถานะอธิกมาสเป็น false

วันที่เกรกอรีปีจันทรคติเดือนชนิดวันจันทรคติ
2024-02-09202312ปกติ30
2024-02-1020241ปกติ1
2024-02-2920241ปกติ20
2025-07-2420256ปกติ30
2025-07-2520256อธิกมาส1
2025-08-2220256อธิกมาส29
2025-08-2320257ปกติ1
2033-12-21203311ปกติ30
2033-12-22203311อธิกมาส1
2034-01-19203311อธิกมาส29
2034-01-20203312ปกติ1
2034-02-1920341ปกติ1

ทดสอบแต่ละวันทั้งสองทิศทาง การแปลงเกรกอรีเป็นจันทรคติควรให้ค่าจันทรคติครบทั้งสี่ช่อง และการแปลงจันทรคติเป็นเกรกอรีควรได้วันที่ที่ระบุคืนมา จากนั้นทดสอบลำดับวันทั้งหมดรอบจุดเปลี่ยน ไม่ใช่เพียงวันแรก วิธีนี้ช่วยแยกข้อผิดพลาดของวันเริ่มเดือนออกจากป้ายแสดงผลที่ทำค่าสถานะอธิกมาสหาย

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

การตรวจโครงสร้างและข้อมูลนำเข้า

การตรวจสอบการทำงานที่คาดหมาย
เลื่อนจากวันสุดท้ายของเดือนจันทรคติไปวันถัดไปได้วันที่หนึ่งของเดือนถัดไปตามลำดับเวลา พร้อมหมายเลขเดือน ค่าสถานะอธิกมาส และปีจันทรคติที่ถูกต้อง
เลื่อนจากเดือนปกติเข้าสู่เดือนอธิกมาสที่ตามมาใช้หมายเลขเดือนเดิมและเปลี่ยนค่าสถานะอธิกมาสเป็น true
เลื่อนจากเดือนอธิกมาสเข้าสู่เดือนถัดไปล้างค่าสถานะอธิกมาสและเลื่อนหมายเลขเดือน รวมการเปลี่ยนปีหากจำเป็น
ขอวันที่ 30 ของเดือนอธิกมาสที่หกใน ค.ศ. 2025 ซึ่งมี 29 วันปฏิเสธวันที่จันทรคติที่ไม่มีอยู่
ขอเดือนอธิกมาสในปีที่ไม่มีเดือนอธิกมาสนั้นปฏิเสธแทนการนำเดือนปกติมาใช้แทน
ป้อนวันที่ 29 กุมภาพันธ์ ค.ศ. 2000 แล้วป้อนวันที่ 29 กุมภาพันธ์ ค.ศ. 2100ยอมรับวันที่เกรกอรีแรกและปฏิเสธวันที่ที่สอง
ป้อนวันที่ 29 กุมภาพันธ์ ค.ศ. 1500 ภายใต้ข้อตกลงจูเลียนของ Atlasยอมรับว่าเป็นวันที่จูเลียนที่มีอยู่จริง
เลื่อนไปหนึ่งวันพลเรือนจาก 1582-10-04 ภายใต้ข้อตกลงการเปลี่ยนปฏิทินของ Atlasได้ 1582-10-15 หลังเวลาผ่านไปหนึ่งวันพอดี
แปลงวันที่ที่มีอยู่จริงเป็นจันทรคติแล้วแปลงกลับได้วันที่เดิมคืนมาโดยไม่สูญเสียการระบุว่าเป็นเดือนอธิกมาส

ปฏิทินจูเลียนเพิ่มหนึ่งวันทุกปีที่สี่ เกณฑ์เกรกอรีไม่นับปีที่ลงท้ายศตวรรษเป็นปีเพิ่มวัน เว้นแต่หารด้วย 400 ลงตัว ด้วยเหตุนี้ การทดสอบวันเพิ่มจึงต้องระบุปฏิทินพลเรือนที่ใช้

การทดสอบการปฏิเสธข้างต้นอธิบายส่วนรับวันที่ที่ตรวจข้อมูลอย่างเคร่งครัด ไลบรารีเบื้องหลังอาจมีการปรับค่าให้อยู่ในรูปที่ยอมรับได้ตามที่เอกสารระบุ เช่น เลื่อนเลขวันที่เกินขอบเขตไปยังเดือนถัดไป ให้ทดสอบพฤติกรรมเหล่านี้แยกกัน แทนที่จะเข้าใจว่าค่าที่ปรับแล้วคือข้อมูลเดิมที่ป้อน

การตรวจส่วนติดต่อผู้ใช้

ทดสอบการเปลี่ยนภาษา การรีเฟรชเบราว์เซอร์ การเลื่อนดูเดือน และรายการปฏิทินฤกษ์จีนแยกจากฟังก์ชันแปลงวันที่ การเปลี่ยนภาษาควรรักษาวันที่เลือกและเดือนที่แสดงไว้ การเปิดดูเดือนอื่นควรรักษาวันที่เลือกจนกว่าจะเลือกวันใหม่ ตรวจว่ารายการปฏิทินฤกษ์จีนเปิดวันที่เกรกอรีตามเวลาท้องถิ่นของอุปกรณ์ และหน้าวันที่ถาวรยังคงวันที่พลเรือนที่เขียนไว้แม้อยู่ในเขตเวลาอื่น

รวมขณะทดสอบที่วันที่ท้องถิ่นของอุปกรณ์ต่างจากวันที่อ้างอิงของปฏิทินด้วย วิธีนี้ตรวจจับข้อผิดพลาดที่นำเวลานาฬิกาอ้างอิงทางดาราศาสตร์มาเลือกวันที่ของรายการปฏิทินฤกษ์จีน หรือนำนาฬิกาเบราว์เซอร์มาสร้างขอบเขตเดือนจันทรคติใหม่

สารทฤดูและจุดเปลี่ยน

การเปรียบเทียบสารทฤดูต้องมี ตัวระบุสารท วันที่พลเรือน เวลา มาตรฐานเวลา และระดับความละเอียดที่เผยแพร่ ทำให้ค่าทั้งสองอยู่ในปฏิทินพลเรือนและมาตรฐานเวลาเดียวกันก่อนเปรียบเทียบ เวลาที่เผยแพร่ละเอียดถึงนาทีไม่อาจยืนยันความตรงกันถึงวินาที

ทดสอบวันที่ปฏิทินที่กำหนดแยกจากค่าความคลาดเคลื่อนที่ยอมรับได้ของวันและเวลา ความต่างน้อยกว่าหนึ่งนาทีอาจยอมรับได้สำหรับการแสดงผลที่ปัดเศษ แต่ทำให้เหตุการณ์อยู่ผิดฝั่งเที่ยงคืนได้ บันทึกความไม่แน่นอนที่ทราบสำหรับขอบเขตนั้นโดยเฉพาะ แทนการขยายค่าความคลาดเคลื่อนที่ยอมรับได้สำหรับทุกวัน

รวมกรณีจันทร์ดับกับสารทหลักเกิดในวันที่อ้างอิงเดียวกันด้วย สารทถือว่าอยู่ในเดือนปฏิทินใหม่ แม้จะเกิดก่อนขณะร่วมทิศ การทดสอบที่ดูเพียงลำดับเวลาของเหตุการณ์อาจมองข้ามความแตกต่างนี้

ในการกำหนดหมายเลขเดือนอธิกมาส ให้รวม ลำดับ ค.ศ. 2033–2034 เดือนที่แปดปกติของ ค.ศ. 2033 และเดือนที่หนึ่งของ ค.ศ. 2034 ไม่มีสารทหลัก ขณะที่เดือนอธิกมาสระหว่างนั้นคือเดือนที่สิบเอ็ด การคำนวณที่ถือว่าทุกเดือนที่ไม่มีสารทหลักเป็นเดือนอธิกมาสจะไม่ผ่านการตรวจเหล่านี้

การตรวจปฏิทินฤกษ์จีนและวันที่ประวัติศาสตร์

การจัดประเภทในปฏิทินฤกษ์จีน

อี๋ หมายถึงกิจกรรมที่เหมาะสม และ จี้ หมายถึงกิจกรรมที่ควรหลีกเลี่ยง การได้จันทร์ดับหรือวันที่จันทรคติตรงกันไม่ได้ตรวจยืนยันรายการเหล่านี้ ให้ทดสอบเกณฑ์ค้นค่ากับข้อตกลงหรือชุดข้อมูลปฏิทินฤกษ์จีนที่เลือก แล้วตรวจป้ายชื่อกิจกรรมภาษาอังกฤษแยกต่างหาก ผลที่ระบุชัดว่า “ไม่มี” ยังต้องแยกจากข้อมูลที่ขาดหายได้ด้วย

หากการจัดประเภทในปฏิทินฤกษ์จีนเปลี่ยนที่สารทฤดู ให้บันทึกว่าขอบเขตคือเวลาเริ่มวันปฏิทินของสารทนั้นหรือขณะที่สารทเกิดขึ้นแน่นอน ทดสอบทั้งสองฝั่งของขอบเขตที่เลือก การจัดประเภทเดือนเหล่านี้ไม่จำเป็นต้องเปลี่ยนที่ต้นเดือนจันทรคติ

กานจือ หรือวัฏจักรต้นฟ้า–กิ่งดินก็ต้องระบุขอบเขตปีเช่นกัน ชื่อปีที่ยึดตรุษจีนกับชื่อปีที่ยึดเริ่มฤดูใบไม้ผลิหรือลี่ชุนอาจต่างกันในช่วงระหว่างจุดเปลี่ยนทั้งสอง ให้เปรียบเทียบแต่ละช่องตามข้อตกลงที่ช่องนั้นระบุ

การแปลงวันที่ประวัติศาสตร์

สำหรับเอกสารประวัติศาสตร์ ให้ระบุราชวงศ์หรือปีศักราช ท้องถิ่น ชื่อหรือหมายเลขเดือน คำกำกับอธิกมาส และชื่อวันกานจือที่บันทึกไว้ ก่อนเลือกวิธีแปลง ปฏิทินเก่าใช้วิธีทางดาราศาสตร์และข้อตกลงเรื่องเวลาต่างกัน การนำวิธีคำนวณสมัยใหม่ย้อนกลับไปใช้จึงอาจต่างจากปฏิทินที่ใช้จริงในบันทึก

เก็บข้อความถอด การตีความ และวันที่แปลงแล้วไว้คนละช่อง หากเอกสารให้ทั้งวันที่เป็นตัวเลขและชื่อวันกานจือ ให้ตรวจว่าตรงกันหรือไม่ แทนการทิ้งอย่างหนึ่งเพื่อให้อีกอย่างดูสอดคล้อง

ค.ศ. 1–2100

นโยบายความเป็นส่วนตัว