Ç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 tarihKamerî yılAyTürKamerî gün
2024-02-09202312Normal30
2024-02-1020241Normal1
2024-02-2920241Normal20
2025-07-2420256Normal30
2025-07-2520256Artık1
2025-08-2220256Artık29
2025-08-2320257Normal1
2033-12-21203311Normal30
2033-12-22203311Artık1
2034-01-19203311Artık29
2034-01-20203312Normal1
2034-02-1920341Normal1

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

KontrolBeklenen davranış
Bir kamerî ayın son gününden ilerlemeDoğ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 ilerlemeAy numarası tekrarlanır ve artık ay bayrağı true olur
Artık aydan sonraki aya ilerlemeArtı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ü istemeVar olmayan ay takvimi tarihi reddedilir
O artık ayın bulunmadığı bir yılda artık ay istemeNormal 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 girmeGeç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 ilerlemeTam bir gün sonra 1582-10-15 tarihine ulaşılır
Geçerli bir tarihi ay takvimine dönüştürüp geri çevirmeArtı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.

MS 1–2100

Gizlilik Politikası