Cara mengesahkan pengiraan kalendar Cina
Tarikh rujukan
Sahkan penukaran tarikh qamari, penentuan masa tempoh suria, pengelasan almanak dan tingkah laku antara muka secara berasingan. Kesepadanan dalam satu bahagian tidak membuktikan bahawa bahagian lain betul. Set semakan yang berguna merangkumi sempadan bulan dan tahun serta tarikh dalam sesuatu bulan.
Pilih rujukan bebas yang menyatakan kelaziman kalendar dan liputannya. Laman web kedua yang menggunakan enjin pengiraan yang sama mungkin menghasilkan semula ralat yang sama. Catatkan edisi atau versi rujukan bersama nilai yang dijangka supaya perubahan kemudian dapat dijejaki.
Atlas menyokong tarikh sivil dari 1 M hingga 2100. Enjin pengiraannya yang ditetapkan pada versi tertentu menggunakan tarikh sivil Julian hingga 1582-10-04, diikuti oleh 1582-10-15 Gregory. 5 Oktober hingga 14 Oktober tidak berlaku dalam urutan tarikh sivil itu. Perbandingan yang menggunakan kalendar Gregory yang dilanjutkan ke masa lalu sebelum pengenalannya, dipanggil kalendar Gregory proleptik, sedang menguji pemetaan yang berbeza bagi tarikh terdahulu.
Kelaziman ini menerangkan label tarikh sivil perisian. Ia tidak membuktikan kalendar yang digunakan di China pada sesuatu zaman sejarah. Uji titik hujung yang disokong dan pengendalian tarikh di luarnya. Julat tarikh sivil juga berbeza daripada julat tahun qamari lengkap, yang sempadannya jatuh pada hari yang berbeza.
Simpan setiap hasil sebagai tarikh sivil dan kelaziman kalendar, tahun qamari, nombor bulan qamari, bendera lompat dan hari qamari yang lengkap. Bezakan nombor bulan daripada kedudukannya dalam tahun: bulan keenam lompat ialah bulan ketujuh mengikut kronologi, tetapi nombor bulannya kekal enam.
Kes ujian
Semakan tarikh tepat
Tarikh ini merangkumi Tahun Baru Cina, hari lompat Gregory yang sah, serta kedua-dua hujung bulan qamari biasa dan lompat. Dalam jadual ini, label tahun qamari ialah tahun Gregory apabila tahun qamari itu bermula. “Biasa” bermaksud bendera lompat bernilai palsu.
| Tarikh Gregory | Tahun qamari | Bulan | Jenis | Hari qamari |
|---|---|---|---|---|
| 2024-02-09 | 2023 | 12 | Biasa | 30 |
| 2024-02-10 | 2024 | 1 | Biasa | 1 |
| 2024-02-29 | 2024 | 1 | Biasa | 20 |
| 2025-07-24 | 2025 | 6 | Biasa | 30 |
| 2025-07-25 | 2025 | 6 | Lompat | 1 |
| 2025-08-22 | 2025 | 6 | Lompat | 29 |
| 2025-08-23 | 2025 | 7 | Biasa | 1 |
| 2033-12-21 | 2033 | 11 | Biasa | 30 |
| 2033-12-22 | 2033 | 11 | Lompat | 1 |
| 2034-01-19 | 2033 | 11 | Lompat | 29 |
| 2034-01-20 | 2033 | 12 | Biasa | 1 |
| 2034-02-19 | 2034 | 1 | Biasa | 1 |
Jalankan setiap tarikh dalam kedua-dua arah. Penukaran Gregory kepada qamari sepatutnya menghasilkan keempat-empat medan qamari, dan penukaran qamari kepada Gregory sepatutnya mendapatkan semula tarikh yang dinyatakan. Kemudian uji keseluruhan urutan di sekitar sempadan, bukan hanya hari pertamanya. Ini membezakan permulaan bulan yang salah daripada label paparan yang menggugurkan bendera lompat.
Penukaran pergi balik sahaja tidak dapat membuktikan ketepatan. Dua fungsi boleh berkongsi jadual salah yang sama dan masih saling membalikkan hasil dengan sempurna. Perbandingan dengan nilai jangkaan bebas ialah semakan yang berasingan. Perbandingan menyeluruh hendaklah merekodkan bilangan tarikh yang dibandingkan, rujukan yang digunakan dan setiap ketidakpadanan.
Semakan struktur dan input
| Semakan | Tingkah laku yang dijangka |
|---|---|
| Maju dari hari terakhir bulan qamari | Hari pertama bulan seterusnya mengikut kronologi, dengan nombor bulan, bendera lompat dan tahun qamari yang betul |
| Maju dari bulan biasa ke bulan lompatnya | Ulangi nombor bulan dan tukar bendera lompat kepada benar |
| Maju dari bulan lompat ke bulan berikutnya | Kosongkan bendera lompat dan majukan nombor bulan, termasuk sebarang pertukaran tahun yang diperlukan |
| Minta hari 30 bagi bulan keenam lompat yang mempunyai 29 hari pada 2025 | Tolak tarikh qamari yang tidak wujud itu |
| Minta bulan lompat dalam tahun yang tidak mempunyai bulan lompat itu | Tolaknya, bukan menggantikannya dengan bulan biasa |
| Masukkan 29 Februari 2000, kemudian 29 Februari 2100 | Terima tarikh Gregory pertama dan tolak yang kedua |
| Masukkan 29 Februari 1500 menurut kelaziman Julian Atlas | Terimanya sebagai tarikh Julian yang sah |
| Maju satu hari sivil dari 1582-10-04 menurut kelaziman peralihan Atlas | Sampai pada 1582-10-15, tepat satu hari berlalu kemudian |
| Tukar tarikh yang sah kepada qamari dan kembali semula | Dapatkan semula tarikh asal tanpa kehilangan identiti bulan lompat |
Kalendar Julian menambah hari lompat setiap tahun keempat. Aturan Gregory mengecualikan tahun abad melainkan boleh dibahagi tepat dengan 400, sebab itulah ujian hari lompat mesti menyatakan kalendar sivil.
Semakan penolakan menerangkan antara muka kemasukan tarikh yang ketat. Pustaka asas juga mungkin menawarkan penormalan yang didokumenkan, seperti membawa hari di luar julat ke bulan berikutnya. Uji tingkah laku ini secara berasingan, bukannya menganggap nilai yang telah dinormalkan sebagai input asal.
Semakan antara muka
Uji pertukaran bahasa, muat semula pelayar, navigasi bulan dan entri Almanak secara berasingan daripada fungsi penukaran. Pertukaran bahasa sepatutnya mengekalkan tarikh yang dipilih dan bulan yang dipaparkan. Pelayaran bulan lain sepatutnya mengekalkan hari yang dipilih sehingga hari baharu dipilih. Semak bahawa entri Almanak membuka tarikh Gregory tempatan peranti dan halaman tarikh kekal mengekalkan tarikh sivil bertulisnya dalam zon waktu lain.
Sertakan detik ujian apabila tarikh tempatan peranti berbeza daripada tarikh rujukan kalendar. Ini mengesan kesilapan menggunakan jam rujukan astronomi untuk memilih tarikh Almanak, atau menggunakan jam pelayar untuk membina semula sempadan bulan qamari.
Tempoh suria dan sempadan
Perbandingan tempoh suria memerlukan identiti tempoh, tarikh sivil, masa, piawai waktu dan ketelitian yang diterbitkan. Letakkan kedua-dua nilai dalam kalendar sivil dan piawai waktu yang sama sebelum membandingkannya. Masa yang diterbitkan hingga ke minit tidak dapat membuktikan padanan hingga ke saat.
Uji tarikh kalendar yang diperuntukkan secara berasingan daripada toleransi cap masa. Perbezaan kurang daripada seminit mungkin boleh diterima untuk paparan yang dibundarkan, tetapi masih meletakkan peristiwa di sisi tengah malam yang salah. Dokumentasikan sebarang ketidakpastian yang diketahui bagi sempadan tertentu itu, bukannya meluaskan toleransi untuk semua tarikh.
Sertakan bulan baharu dan tempoh suria utama yang berlaku pada tarikh rujukan yang sama. Tempoh itu tergolong dalam bulan kalendar baharu walaupun detiknya mendahului konjungsi. Ujian yang hanya berdasarkan urutan cap masa peristiwa boleh terlepas perbezaan ini.
Bagi penomboran bulan lompat, sertakan urutan 2033–2034. Bulan kelapan biasa pada 2033 dan bulan pertama pada 2034 tidak mempunyai tempoh suria utama, manakala bulan lompat di antaranya ialah bulan kesebelas. Pengiraan yang menganggap setiap bulan tanpa tempoh suria utama sebagai lompat akan gagal dalam semakan ini.
Semakan almanak dan sejarah
Pengelasan almanak
Yi bermaksud aktiviti yang sesuai dan Ji bermaksud aktiviti yang perlu dielakkan. Padanan bulan baharu atau tarikh qamari tidak mengesahkan senarai ini. Uji aturan cariannya dengan kelaziman almanak atau set data yang dipilih, kemudian semak label aktiviti bahasa Inggeris secara berasingan. Hasil “tiada” yang jelas juga perlu kekal dapat dibezakan daripada data yang hilang.
Apabila pengelasan almanak berubah pada tempoh suria, catatkan sama ada sempadannya ialah permulaan hari kalendar tempoh itu atau detik tepat tempoh tersebut. Uji kedua-dua sisi sempadan yang dipilih. Pengelasan bulan ini tidak semestinya berubah pada permulaan bulan qamari.
Ganzhi, kitaran batang dan cabang, juga memerlukan sempadan tahun yang dinyatakan. Label tahun berdasarkan Tahun Baru Cina dan label berdasarkan Permulaan Musim Bunga, atau Lichun, boleh berbeza sepanjang sela antara sempadan itu. Bandingkan setiap medan menggunakan kelaziman yang dinyatakannya.
Penukaran sejarah
Bagi dokumen sejarah, tentukan tahun dinasti atau eranya, tempat, penamaan bulan, label lompat dan sebarang hari Ganzhi yang dicatatkan sebelum memilih kaedah penukaran. Kalendar terdahulu menggunakan kaedah astronomi dan kelaziman waktu yang berbeza. Oleh itu, pengiraan moden yang dilanjutkan ke masa lalu mungkin berbeza daripada kalendar yang sebenarnya digunakan untuk rekod tersebut.
Simpan transkripsi, tafsirannya dan tarikh yang ditukar sebagai medan berasingan. Apabila dokumen membekalkan tarikh bernombor serta hari Ganzhi, uji kesepadanannya, bukannya membuang salah satu supaya yang satu lagi kelihatan sepadan.