Cách kiểm chứng phép tính lịch Trung Quốc

Ngày tham chiếu

Kiểm chứng riêng việc đổi ngày âm lịch, thời điểm tiết khí, các phân loại hoàng lịch và cách hoạt động của giao diện. Một phần trùng khớp không chứng minh các phần còn lại đúng. Bộ kiểm tra hữu ích cần có ranh giới tháng và năm, bên cạnh những ngày nằm trong tháng.

Chọn tài liệu tham chiếu độc lập có nêu rõ quy ước lịch và phạm vi bao phủ. Trang web thứ hai dùng cùng bộ máy tính toán có thể lặp lại cùng lỗi. Ghi ấn bản hoặc phiên bản tham chiếu cùng các giá trị mong đợi để có thể truy nguyên khi về sau có thay đổi.

Atlas hỗ trợ ngày dân sự từ năm 1 đến hết năm 2100 Công nguyên. Phiên bản bộ máy tính toán được cố định của Atlas dùng ngày dân sự Julius đến hết 1582-10-04, tiếp theo là ngày Gregory 1582-10-15. Các ngày từ 5 đến 14 tháng 10 không xuất hiện trong chuỗi ngày dân sự đó. So sánh bằng lịch Gregory áp dụng ngược về thời kỳ trước khi nó ra đời, gọi là lịch Gregory kéo dài ngược về quá khứ, là kiểm tra một cách ánh xạ khác đối với những ngày trước đó.

Quy ước này mô tả nhãn ngày dân sự của phần mềm. Nó không xác định hệ lịch nào từng được dùng trong lịch sử Trung Quốc. Hãy kiểm tra hai đầu phạm vi được hỗ trợ và cách xử lý ngày nằm ngoài phạm vi. Một khoảng ngày dân sự cũng khác với một khoảng gồm các năm âm lịch trọn vẹn, vì ranh giới của chúng rơi vào các ngày khác nhau.

Lưu mỗi kết quả với đầy đủ ngày dân sự và quy ước lịch, năm âm lịch, số tháng âm lịch, cờ nhuận và ngày âm lịch. Phân biệt số tháng với vị trí tháng trong năm: tháng sáu nhuận là tháng thứ bảy theo trình tự thời gian, nhưng số tháng vẫn là sáu.

Các trường hợp kiểm thử

Kiểm tra ngày chính xác

Những ngày này bao gồm Tết Nguyên đán Trung Quốc, một ngày nhuận Gregory hợp lệ và cả đầu lẫn cuối các tháng âm lịch thường và nhuận. Trong bảng, nhãn năm âm lịch là năm Gregory trong đó năm âm lịch ấy bắt đầu. “Thường” nghĩa là cờ nhuận có giá trị sai.

Ngày GregoryNăm âm lịchThángLoạiNgày âm lịch
2024-02-09202312Thường30
2024-02-1020241Thường1
2024-02-2920241Thường20
2025-07-2420256Thường30
2025-07-2520256Nhuận1
2025-08-2220256Nhuận29
2025-08-2320257Thường1
2033-12-21203311Thường30
2033-12-22203311Nhuận1
2034-01-19203311Nhuận29
2034-01-20203312Thường1
2034-02-1920341Thường1

Chạy từng ngày theo cả hai chiều. Đổi từ Gregory sang âm lịch phải cho đủ bốn trường âm lịch, và đổi từ âm lịch sang Gregory phải thu lại ngày đã nêu. Sau đó kiểm tra toàn bộ chuỗi quanh ranh giới, không chỉ ngày đầu tiên. Cách này phân biệt việc tính sai đầu tháng với nhãn hiển thị làm mất cờ nhuận.

Chỉ đổi đi rồi đổi lại không chứng minh được độ chính xác. Hai hàm có thể dùng chung một bảng sai mà vẫn đảo ngược kết quả của nhau hoàn hảo. Đối chiếu với các giá trị mong đợi độc lập là một phép kiểm tra riêng. Một đối chiếu toàn diện cần ghi số ngày đã so sánh, tài liệu tham chiếu đã dùng và mọi chỗ không khớp.

Kiểm tra cấu trúc và dữ liệu đầu vào

Phép kiểm traHành vi mong đợi
Tiến từ ngày cuối một tháng âm lịchĐến mồng một của tháng kế tiếp theo trình tự thời gian, với đúng số tháng, cờ nhuận và năm âm lịch
Tiến từ tháng thường sang tháng nhuận của nóLặp lại số tháng và đổi cờ nhuận thành đúng
Tiến từ tháng nhuận sang tháng kế tiếpBỏ cờ nhuận và tăng số tháng, kể cả chuyển sang năm mới khi cần
Yêu cầu ngày 30 của tháng sáu nhuận năm 2025 dài 29 ngàyTừ chối ngày âm lịch không tồn tại
Yêu cầu tháng nhuận trong năm không có tháng nhuận ấyTừ chối thay vì thay bằng tháng thường
Nhập ngày 29 tháng 2 năm 2000, rồi ngày 29 tháng 2 năm 2100Chấp nhận ngày Gregory thứ nhất và từ chối ngày thứ hai
Nhập ngày 29 tháng 2 năm 1500 theo quy ước Julius của AtlasChấp nhận là ngày Julius hợp lệ
Tiến một ngày dân sự từ 1582-10-04 theo quy ước chuyển lịch của AtlasĐến 1582-10-15, sau đúng một ngày đã trôi qua
Đổi một ngày hợp lệ sang âm lịch rồi đổi ngược lạiThu lại ngày ban đầu mà không mất nhận dạng tháng nhuận

Lịch Julius thêm ngày nhuận mỗi bốn năm. Quy tắc Gregory loại các năm tròn thế kỷ, trừ khi chia hết cho 400; đó là lý do phép kiểm tra ngày nhuận phải nêu rõ hệ lịch dân sự.

Các phép kiểm tra từ chối mô tả giao diện nhập ngày nghiêm ngặt. Thư viện bên dưới cũng có thể cung cấp cách chuẩn hóa đã được tài liệu hóa, chẳng hạn chuyển ngày vượt phạm vi sang tháng kế tiếp. Hãy kiểm tra riêng các hành vi này, thay vì nhầm giá trị đã chuẩn hóa với dữ liệu nhập ban đầu.

Kiểm tra giao diện

Kiểm tra việc đổi ngôn ngữ, tải lại trình duyệt, chuyển tháng và mục Hoàng lịch tách biệt với các hàm đổi lịch. Đổi ngôn ngữ phải giữ ngày đang chọn và tháng đang hiển thị. Xem tháng khác phải giữ ngày đã chọn cho đến khi một ngày mới được chọn. Kiểm tra rằng mục Hoàng lịch mở ngày Gregory địa phương của thiết bị và trang cố định của một ngày giữ ngày dân sự đã ghi khi được mở ở múi giờ khác.

Bổ sung một thời điểm kiểm thử khi ngày địa phương của thiết bị khác ngày tham chiếu của lịch. Việc này phát hiện lỗi dùng đồng hồ tham chiếu thiên văn để chọn ngày Hoàng lịch, hoặc dùng đồng hồ trình duyệt để dựng lại ranh giới tháng âm lịch.

Tiết khí và ranh giới

So sánh tiết khí cần có tên tiết khí, ngày dân sự, giờ, chuẩn thời gian và độ chính xác công bố. Đưa cả hai giá trị về cùng hệ lịch dân sự và chuẩn thời gian trước khi so sánh. Giờ công bố đến phút không thể chứng minh sự trùng khớp đến giây.

Kiểm tra ngày lịch được gán tách biệt với dung sai của thời điểm. Chênh lệch dưới một phút có thể chấp nhận được đối với phần hiển thị đã làm tròn, nhưng lại đưa sự kiện sang sai phía của mốc nửa đêm. Ghi lại độ bất định đã biết của ranh giới cụ thể ấy, thay vì nới dung sai cho tất cả các ngày.

Bổ sung trường hợp sóc và trung khí xảy ra trong cùng ngày tham chiếu. Trung khí thuộc tháng lịch mới ngay cả khi thời điểm của nó đến trước giao hội. Phép kiểm tra chỉ dựa vào thứ tự các thời điểm sự kiện có thể bỏ sót sự phân biệt này.

Đối với việc đánh số tháng nhuận, hãy đưa chuỗi 2033–2034 vào kiểm thử. Tháng tám thường năm 2033 và tháng giêng năm 2034 không có trung khí, trong khi tháng nhuận nằm giữa là tháng mười một. Phép tính coi mọi tháng không có trung khí đều là nhuận sẽ không vượt qua các kiểm tra này.

Kiểm tra hoàng lịch và lịch sử

Các phân loại hoàng lịch

Nghi nghĩa là việc nên làm và Kỵ nghĩa là việc nên tránh. Sóc hoặc ngày âm lịch trùng khớp không xác nhận được các danh sách này. Kiểm tra quy tắc tra cứu của chúng theo quy ước hoàng lịch hoặc bộ dữ liệu đã chọn, rồi kiểm tra riêng các nhãn hoạt động tiếng Anh. Kết quả ghi rõ “không có” cũng cần tiếp tục được phân biệt với dữ liệu bị thiếu.

Khi một phân loại hoàng lịch thay đổi tại tiết khí, hãy ghi rõ ranh giới là đầu ngày lịch có tiết khí ấy hay đúng thời điểm của tiết khí. Kiểm tra cả hai phía của ranh giới đã chọn. Những phân loại tháng này không nhất thiết thay đổi vào đầu tháng âm lịch.

Can Chi, chu kỳ thiên can và địa chi, tương tự cũng cần có mốc năm được công bố. Nhãn năm dựa vào Tết Nguyên đán Trung Quốc và nhãn dựa vào Lập Xuân có thể khác nhau trong khoảng giữa hai mốc ấy. So sánh từng trường theo quy ước đã nêu của nó.

Đổi ngày lịch sử

Với tài liệu lịch sử, xác định triều đại hoặc năm niên hiệu, địa phương, tên tháng, nhãn nhuận và ngày Can Chi được ghi nếu có trước khi chọn phương pháp đổi lịch. Các hệ lịch trước đây dùng phương pháp thiên văn và quy ước thời gian khác nhau. Vì vậy, phép tính hiện đại kéo dài ngược về quá khứ có thể khác lịch thực sự được dùng trong bản ghi.

Giữ bản chép, cách diễn giải và ngày đã đổi thành các trường riêng. Khi tài liệu cho cả ngày theo số và ngày Can Chi, hãy kiểm tra chúng có khớp nhau không, thay vì bỏ một thông tin để ép thông tin còn lại cho khớp.

Công nguyên 1–2100

Chính sách quyền riêng tư