Çin takvimi hesabı nasıl doğrulanır?
Referans tarihler
Ay takvimi tarihi dönüşümünü, güneş dönemlerinin zamanlamasını, almanak sınıflandırmalarını ve arayüz davranışını ayrı ayrı doğrulayın. Bir bölümde uyuşma olması, diğerlerinin doğru olduğunu göstermez. Yararlı bir kontrol kümesi, ay içindeki tarihlerin yanı sıra ay ve yıl sınırlarını da içerir.
Takvim kuralı ve kapsamı belirtilmiş bağımsız bir referans seçin. Aynı hesaplama motorunu kullanan ikinci bir internet sitesi, aynı hataları yeniden üretebilir. Sonraki bir değişiklik izlenebilsin diye referansın baskısını veya sürümünü beklenen değerlerle birlikte kaydedin.
Atlas, MS 1’den 2100’e kadar sivil tarihleri destekler. Sabitlenmiş sürümdeki hesaplama motoru, 1582-10-04’e kadar Jülyen sivil tarihlerini, ardından Gregoryen 1582-10-15 tarihini kullanır. 5 Ekim’den 14 Ekim’e kadar olan tarihler bu sivil tarih dizisinde yer almaz. Gregoryen takvimini tarihsel kullanımından önceye uzatan, proleptik Gregoryen takvimi denen takvime göre yapılan karşılaştırma, eski tarihler için farklı bir eşlemeyi test eder.
Bu kural, yazılımın sivil tarih etiketlerini tanımlar. Çin’de tarihsel olarak hangi takvimin kullanıldığını belirlemez. Desteklenen uç noktaları ve aralık dışındaki tarihlerin nasıl ele alındığını test edin. Sivil tarih aralığı, sınırları farklı günlere rastlayan tam kamerî yıllar aralığından da farklıdır.
Her sonucu, tam sivil tarih ve takvim kuralı, kamerî yıl, kamerî ay numarası, artık ay bayrağı ve kamerî gün olarak saklayın. Ay numarasını yıl içindeki sırasından ayırt edin: artık altıncı ay, kronolojik sırada yedinci aydır; ancak ay numarası altı olarak kalır.
Test örnekleri
Kesin tarih kontrolleri
Bu tarihler, Çin Yeni Yılı’nı, geçerli bir Gregoryen artık günü ve normal ile artık kamerî ayların iki ucunu kapsar. Tabloda kamerî yıl etiketi, o kamerî yılın başladığı Gregoryen yıldır. “Normal”, artık ay bayrağının false olduğunu belirtir.
| Gregoryen tarih | Kamerî yıl | Ay | Tür | Kamerî gün |
|---|---|---|---|---|
| 2024-02-09 | 2023 | 12 | Normal | 30 |
| 2024-02-10 | 2024 | 1 | Normal | 1 |
| 2024-02-29 | 2024 | 1 | Normal | 20 |
| 2025-07-24 | 2025 | 6 | Normal | 30 |
| 2025-07-25 | 2025 | 6 | Artık | 1 |
| 2025-08-22 | 2025 | 6 | Artık | 29 |
| 2025-08-23 | 2025 | 7 | Normal | 1 |
| 2033-12-21 | 2033 | 11 | Normal | 30 |
| 2033-12-22 | 2033 | 11 | Artık | 1 |
| 2034-01-19 | 2033 | 11 | Artık | 29 |
| 2034-01-20 | 2033 | 12 | Normal | 1 |
| 2034-02-19 | 2034 | 1 | Normal | 1 |
Her tarihi iki yönde de çalıştırın. Gregoryen takviminden ay takvimine dönüşüm, dört kamerî alanın tümünü üretmeli; ay takviminden Gregoryen takvimine dönüşüm ise belirtilen tarihi geri vermelidir. Ardından yalnızca ilk günü değil, sınır çevresindeki bütün diziyi test edin. Böylece yanlış bir ay başlangıcı ile artık ay bayrağını düşüren gösterim etiketi ayırt edilir.
Gidiş-dönüş dönüşümü tek başına doğruluğu kanıtlayamaz. İki işlev aynı yanlış tabloyu paylaşırken birbirinin işlemini kusursuzca geri alabilir. Bağımsız beklenen değerlerle karşılaştırma ayrı bir kontroldür. Kapsamlı bir karşılaştırmada kaç tarihin karşılaştırıldığı, hangi referansın kullanıldığı ve her uyuşmazlık kaydedilmelidir.
Yapı ve girdi kontrolleri
| Kontrol | Beklenen davranış |
|---|---|
| Bir kamerî ayın son gününden ilerleme | Doğru ay numarası, artık ay bayrağı ve kamerî yılla birlikte, kronolojik olarak sonraki ayın birinci gününe ulaşılır |
| Normal aydan onun artık ayına ilerleme | Ay numarası tekrarlanır ve artık ay bayrağı true olur |
| Artık aydan sonraki aya ilerleme | Artık ay bayrağı kaldırılır ve gerekiyorsa yıl değişimi de yapılarak ay numarası ilerletilir |
| 2025’teki 29 günlük artık altıncı ayın 30. gününü isteme | Var olmayan ay takvimi tarihi reddedilir |
| O artık ayın bulunmadığı bir yılda artık ay isteme | Normal ayla değiştirilmek yerine reddedilir |
| Önce 29 Şubat 2000, ardından 29 Şubat 2100 girme | İlk Gregoryen tarih kabul edilir, ikincisi reddedilir |
| Atlas’ın Jülyen kuralına göre 29 Şubat 1500 girme | Geçerli bir Jülyen tarih olarak kabul edilir |
| Atlas’ın takvim geçişi kuralına göre 1582-10-04 tarihinden bir sivil gün ilerleme | Tam bir gün sonra 1582-10-15 tarihine ulaşılır |
| Geçerli bir tarihi ay takvimine dönüştürüp geri çevirme | Artık ay kimliği kaybolmadan özgün tarih geri elde edilir |
Jülyen takvimi her dört yılda bir artık gün ekler. Gregoryen kuralı, 400’e bölünemeyen yüzyıl yıllarını dışarıda bırakır; bu nedenle artık gün testinde sivil takvim belirtilmelidir.
Reddetme kontrolleri, tarih girdisini sıkı biçimde denetleyen bir arayüzü tanımlar. Altta çalışan kütüphane, aralık dışındaki bir günü sonraki aya taşımak gibi belgelenmiş normalleştirme davranışları da sunabilir. Normalleştirilmiş bir değeri özgün girdi sanmak yerine, bu davranışları ayrı ayrı test edin.
Arayüz kontrolleri
Dil değiştirmeyi, tarayıcı yenilemeyi, aylar arasında gezinmeyi ve Almanak girişini dönüşüm işlevlerinden ayrı test edin. Dil değişimi, seçili tarihi ve gösterilen ayı korumalıdır. Başka bir aya göz atıldığında, yeni bir gün seçilene kadar seçili gün korunmalıdır. Almanak girişinin cihazın yerel Gregoryen tarihini açtığını ve kalıcı tarih sayfasının başka bir saat diliminde de üzerinde yazan sivil tarihi koruduğunu kontrol edin.
Cihazın yerel tarihinin takvimin referans tarihinden farklı olduğu bir test anı ekleyin. Bu, Almanak girişinin tarihini seçmek için astronominin referans saatini veya kamerî ay sınırlarını yeniden kurmak için tarayıcının saatini kullanma hatasını yakalar.
Güneş dönemleri ve sınırlar
Bir güneş dönemi karşılaştırması, dönemin kimliğini, sivil tarihi, saati, zaman standardını ve yayımlanan hassasiyeti gerektirir. Karşılaştırmadan önce iki değeri de aynı sivil takvime ve zaman standardına getirin. Dakikaya kadar yayımlanmış bir saat, saniye düzeyinde eşleşmeyi kanıtlayamaz.
Atanan takvim tarihini, zaman damgasının toleransından ayrı test edin. Bir dakikadan küçük fark, yuvarlanmış gösterim için kabul edilebilirken olayı gece yarısının yanlış tarafına yerleştirebilir. Tüm tarihler için toleransı genişletmek yerine, o belirli sınır için bilinen belirsizliği belgeleyin.
Aynı referans tarihinde gerçekleşen bir yeni ay ile ana güneş dönemini ekleyin. Dönemin anı kavuşumdan önce olsa bile, dönem yeni takvim ayına aittir. Yalnızca olayların zaman damgalarının sırasına dayanan bir test bu ayrımı kaçırabilir.
Artık ay numaralandırması için 2033–2034 dizisini ekleyin. 2033’ün normal sekizinci ayı ile 2034’ün birinci ayı ana güneş dönemi içermez; aradaki artık ay ise on birincidir. Ana güneş dönemi içermeyen her ayı artık sayan bir hesaplama bu kontrollerden geçemez.
Almanak ve tarihsel kontroller
Almanak sınıflandırmaları
Yi, uygun işler; Ji, kaçınılacak işler demektir. Yeni ayın veya ay takvimi tarihinin eşleşmesi bu listeleri doğrulamaz. Tabloya başvurma kurallarını seçilen almanak kuralına veya veri kümesine göre test edin; ardından İngilizce iş etiketlerini ayrı kontrol edin. Açıkça verilen “yok” sonucu da eksik veriden ayırt edilebilir kalmalıdır.
Bir almanak sınıflandırması güneş döneminde değişiyorsa, sınırının dönemin takvim gününün başlangıcı mı yoksa kesin anı mı olduğunu kaydedin. Seçilen sınırın iki yanını da test edin. Bu ay sınıflandırmalarının kamerî ay başlangıcında değişmesi gerekmez.
Gövde-dal döngüsü Ganzhi için de yıl sınırı açıklanmış olmalıdır. Çin Yeni Yılı’nı esas alan yıl etiketi ile İlkbaharın Başlangıcı, yani Lichun’u esas alan etiket, bu iki sınır arasındaki dönemde farklı olabilir. Her alanı, belirtilmiş kendi kuralına göre karşılaştırın.
Tarihsel dönüşüm
Tarihsel bir belge için dönüşüm yöntemi seçmeden önce hanedanını veya dönem yılını, yerini, ay adlandırmasını, artık etiketini ve kaydedilmişse Ganzhi gününü belirleyin. Eski takvimler farklı astronomik yöntemler ve zaman kuralları kullanıyordu. Bu nedenle geçmişe uzatılan modern hesap, kayıt için gerçekten kullanılmış takvimden farklı olabilir.
Metin aktarımını, onun yorumunu ve dönüştürülmüş tarihi ayrı alanlar olarak tutun. Belgede hem numaralı tarih hem de Ganzhi günü veriliyorsa, birini diğerine uydurmak için atmak yerine uyuşmalarını test edin.