Wie eine Berechnung des chinesischen Kalenders geprüft wird
Referenzdaten
Prüfen Sie die Umrechnung von Monddaten, die Zeitpunkte der Jahresabschnitte, die Almanachklassifikationen und das Verhalten der Benutzeroberfläche getrennt. Eine Übereinstimmung in einem Bereich belegt nicht, dass die anderen richtig sind. Eine nützliche Auswahl von Prüfungen umfasst Monats- und Jahresgrenzen ebenso wie Daten innerhalb eines Monats.
Wählen Sie eine unabhängige Referenz, deren Kalenderkonvention und Abdeckungsbereich angegeben sind. Eine zweite Website, die dieselbe Berechnungsbibliothek verwendet, kann dieselben Fehler wiederholen. Halten Sie die Ausgabe oder Version der Referenz neben den erwarteten Werten fest, damit sich eine spätere Änderung nachvollziehen lässt.
Der Atlas unterstützt bürgerliche Daten von 1 bis 2100 n. Chr. Seine auf eine feste Version festgelegte Berechnungsbibliothek verwendet julianische bürgerliche Daten bis 1582-10-04, gefolgt vom gregorianischen 1582-10-15. Der 5. bis 14. Oktober kommen in dieser Folge bürgerlicher Daten nicht vor. Ein Vergleich mit dem rückwärts über seine Einführung hinaus verlängerten gregorianischen Kalender, dem proleptischen gregorianischen Kalender, prüft für frühere Daten eine andere Zuordnung.
Diese Konvention beschreibt die bürgerlichen Datumsbezeichnungen der Software. Sie legt nicht fest, welcher Kalender historisch in China verwendet wurde. Prüfen Sie die unterstützten Endpunkte und den Umgang mit Daten außerhalb dieses Bereichs. Ein Bereich bürgerlicher Daten unterscheidet sich zudem von einem Bereich vollständiger Mondjahre, deren Grenzen auf andere Tage fallen.
Speichern Sie jedes Ergebnis vollständig mit bürgerlichem Datum und Kalenderkonvention, Mondjahr, Mondmonatsnummer, Schaltkennzeichen und Mondtag. Unterscheiden Sie die Monatsnummer von der Position im Jahr: Schaltmonat sechs ist chronologisch der siebte Monat, seine Monatsnummer bleibt jedoch sechs.
Testfälle
Prüfungen genauer Daten
Diese Daten decken das chinesische Neujahr, einen gültigen gregorianischen Schalttag sowie die beiden Enden regulärer Mondmonate und Schaltmonate ab. In dieser Tabelle bezeichnet die Mondjahresangabe das gregorianische Jahr, in dem das betreffende Mondjahr beginnt. „Regulär“ bedeutet, dass das Schaltkennzeichen falsch ist.
| Gregorianisches Datum | Mondjahr | Monat | Art | Mondtag |
|---|---|---|---|---|
| 2024-02-09 | 2023 | 12 | Regulär | 30 |
| 2024-02-10 | 2024 | 1 | Regulär | 1 |
| 2024-02-29 | 2024 | 1 | Regulär | 20 |
| 2025-07-24 | 2025 | 6 | Regulär | 30 |
| 2025-07-25 | 2025 | 6 | Schaltmonat | 1 |
| 2025-08-22 | 2025 | 6 | Schaltmonat | 29 |
| 2025-08-23 | 2025 | 7 | Regulär | 1 |
| 2033-12-21 | 2033 | 11 | Regulär | 30 |
| 2033-12-22 | 2033 | 11 | Schaltmonat | 1 |
| 2034-01-19 | 2033 | 11 | Schaltmonat | 29 |
| 2034-01-20 | 2033 | 12 | Regulär | 1 |
| 2034-02-19 | 2034 | 1 | Regulär | 1 |
Rechnen Sie jedes Datum in beide Richtungen um. Die Umrechnung vom gregorianischen zum Mondkalender sollte alle vier Felder des Monddatums liefern; die Rückumrechnung sollte das angegebene Datum ergeben. Prüfen Sie anschließend die gesamte Folge um die Grenze herum, nicht nur ihren ersten Tag. So lässt sich ein falscher Monatsbeginn von einer Anzeige unterscheiden, die das Schaltkennzeichen weglässt.
Eine Hin- und Rückumrechnung allein kann die Genauigkeit nicht belegen. Zwei Funktionen können dieselbe falsche Tabelle verwenden und einander dennoch vollkommen umkehren. Der Vergleich mit unabhängigen Sollwerten ist eine eigene Prüfung. Bei einem vollständigen Vergleich sollten die Anzahl der verglichenen Daten, die verwendete Referenz und jede Abweichung festgehalten werden.
Struktur- und Eingabeprüfungen
| Prüfung | Erwartetes Verhalten |
|---|---|
| Vom letzten Tag eines Mondmonats weiterschalten | Tag eins des chronologisch nächsten Monats mit richtiger Monatsnummer, richtigem Schaltkennzeichen und Mondjahr |
| Von einem regulären Monat in seinen Schaltmonat weiterschalten | Monatsnummer wiederholen und Schaltkennzeichen auf wahr setzen |
| Von einem Schaltmonat in den folgenden Monat weiterschalten | Schaltkennzeichen löschen und Monatsnummer erhöhen, einschließlich eines gegebenenfalls nötigen Jahreswechsels |
| Tag 30 des 29-tägigen Schaltmonats sechs im Jahr 2025 anfordern | Das nicht vorhandene Monddatum zurückweisen |
| Einen Schaltmonat in einem Jahr anfordern, in dem dieser Schaltmonat nicht vorkommt | Zurückweisen, statt den regulären Monat einzusetzen |
| Den 29. Februar 2000 und anschließend den 29. Februar 2100 eingeben | Das erste gregorianische Datum akzeptieren und das zweite zurückweisen |
| Den 29. Februar 1500 nach der julianischen Konvention des Atlas eingeben | Als gültiges julianisches Datum akzeptieren |
| Nach der Umstellungskonvention des Atlas vom 1582-10-04 einen bürgerlichen Kalendertag weiterschalten | Den 1582-10-15 erreichen, genau einen verstrichenen Tag später |
| Ein gültiges Datum in den Mondkalender und zurück umrechnen | Das ursprüngliche Datum wiederherstellen, ohne die Schaltmonatsidentität zu verlieren |
Der julianische Kalender fügt jedes vierte Jahr einen Schalttag ein. Die gregorianische Regel schließt Jahrhundertjahre aus, sofern sie nicht durch 400 teilbar sind. Deshalb muss eine Schalttagsprüfung den bürgerlichen Kalender angeben.
Die Zurückweisungsprüfungen beschreiben eine Oberfläche mit strenger Datumseingabe. Eine zugrunde liegende Bibliothek kann auch eine dokumentierte Normalisierung anbieten, etwa indem sie einen Tag außerhalb des gültigen Bereichs in den nächsten Monat überträgt. Prüfen Sie diese Verhaltensweisen getrennt, statt einen normalisierten Wert mit der ursprünglichen Eingabe zu verwechseln.
Prüfungen der Benutzeroberfläche
Prüfen Sie Sprachwechsel, Neuladen im Browser, Monatsnavigation und den Almanach-Eintrag getrennt von den Umrechnungsfunktionen. Ein Sprachwechsel sollte das ausgewählte Datum und den angezeigten Monat bewahren. Beim Blättern zu einem anderen Monat sollte der ausgewählte Tag erhalten bleiben, bis ein neuer gewählt wird. Prüfen Sie, ob der Almanach-Eintrag das gerätelokale gregorianische Datum öffnet und eine dauerhafte Datumsseite auch in einer anderen Zeitzone ihr ausgeschriebenes bürgerliches Datum behält.
Nehmen Sie einen Testzeitpunkt auf, an dem sich das gerätelokale Datum vom Bezugsdatum des Kalenders unterscheidet. So wird erkannt, wenn fälschlich die astronomische Bezugszeit zur Auswahl des Almanach-Datums oder die Browseruhr zur Rekonstruktion der Mondmonatsgrenzen verwendet wird.
Jahresabschnitte und Grenzen
Ein Vergleich von Jahresabschnitten benötigt die Identität des Abschnitts, bürgerliches Datum, Uhrzeit, Zeitstandard und veröffentlichte Genauigkeit. Überführen Sie beide Werte vor dem Vergleich in denselben bürgerlichen Kalender und Zeitstandard. Eine auf Minuten veröffentlichte Zeit kann keine sekundengenaue Übereinstimmung belegen.
Prüfen Sie das zugewiesene Kalenderdatum getrennt von der Zeitstempeltoleranz. Eine Abweichung von weniger als einer Minute kann für eine gerundete Anzeige zulässig sein, ein Ereignis aber dennoch auf die falsche Seite von Mitternacht legen. Dokumentieren Sie eine bekannte Unsicherheit für die betreffende Grenze, statt die Toleranz für alle Daten auszuweiten.
Nehmen Sie einen Neumond und einen Hauptabschnitt auf, die auf dasselbe Bezugsdatum fallen. Der Abschnitt gehört zum neuen Kalendermonat, auch wenn sein Zeitpunkt vor der Konjunktion liegt. Ein Test, der nur auf der Reihenfolge der Ereigniszeitstempel beruht, kann diesen Unterschied übersehen.
Berücksichtigen Sie bei der Schaltmonatsnummerierung die Folge 2033–2034. Der reguläre Monat acht des Jahres 2033 und Monat eins des Jahres 2034 haben keinen Hauptabschnitt, während der dazwischenliegende Schaltmonat die Nummer elf trägt. Eine Berechnung, die jeden Monat ohne Hauptabschnitt als Schaltmonat behandelt, wird diese Prüfungen nicht bestehen.
Almanach- und historische Prüfungen
Almanachklassifikationen
Yi bedeutet geeignete Tätigkeiten und Ji zu vermeidende Tätigkeiten. Die Übereinstimmung eines Neumonds oder Monddatums validiert diese Listen nicht. Prüfen Sie ihre Nachschlageregeln anhand der gewählten Almanachkonvention oder des Datensatzes und kontrollieren Sie die übersetzten Tätigkeitsbezeichnungen gesondert. Ein ausdrückliches Ergebnis „keine“ muss ebenfalls von fehlenden Daten unterscheidbar bleiben.
Ändert sich eine Almanachklassifikation an einem Jahresabschnitt, halten Sie fest, ob ihre Grenze am Beginn des Kalendertags dieses Abschnitts oder an seinem genauen Zeitpunkt liegt. Prüfen Sie beide Seiten der gewählten Grenze. Diese Monatsklassifikationen müssen sich nicht am Anfang eines Mondmonats ändern.
Auch Ganzhi, der Stamm-Zweig-Zyklus, benötigt eine festgelegte Jahresgrenze. Eine auf dem chinesischen Neujahr beruhende Jahresbezeichnung und eine auf dem Frühlingsanfang, Lichun, beruhende können zwischen diesen beiden Grenzen voneinander abweichen. Vergleichen Sie jedes Feld nach seiner angegebenen Konvention.
Historische Umrechnung
Bestimmen Sie bei einem historischen Dokument zunächst Dynastie oder Ära-Jahr, Ort, Monatsbezeichnung, Schaltkennzeichnung und einen gegebenenfalls verzeichneten Ganzhi-Tag, bevor Sie ein Umrechnungsverfahren wählen. Frühere Kalender verwendeten andere astronomische Verfahren und Zeitkonventionen. Eine rückwärts verlängerte moderne Berechnung kann daher von dem Kalender abweichen, der für die Aufzeichnung tatsächlich verwendet wurde.
Halten Sie die Transkription, ihre Deutung und das umgerechnete Datum in getrennten Feldern fest. Gibt ein Dokument sowohl ein nummeriertes Datum als auch einen Ganzhi-Tag an, prüfen Sie deren Übereinstimmung, statt eine Angabe zu verwerfen, damit die andere passt.