Comment valider un calcul du calendrier chinois

Les dates de référence

Validez séparément la conversion des dates lunaires, les horaires des termes solaires, les classifications de l’almanach et le comportement de l’interface. Une concordance dans une partie n’établit pas l’exactitude des autres. Un ensemble utile de vérifications comprend les limites de mois et d’année autant que des dates à l’intérieur d’un mois.

Choisissez une référence indépendante dont la convention calendaire et la période couverte sont indiquées. Un deuxième site utilisant le même moteur de calcul peut reproduire les mêmes erreurs. Consignez l’édition ou la version de la référence à côté des valeurs attendues pour pouvoir retracer un changement ultérieur.

L’Atlas prend en charge les dates civiles de l’an 1 à 2100 de notre ère. Son moteur de calcul, dont la version est fixée, utilise les dates civiles juliennes jusqu’au 1582-10-04, suivi du 1582-10-15 grégorien. Les dates du 5 au 14 octobre n’existent pas dans cette succession de dates civiles. Une comparaison utilisant le calendrier grégorien étendu dans le passé avant son introduction, appelé calendrier grégorien proleptique, teste une autre correspondance pour les dates anciennes.

Cette convention décrit les désignations de dates civiles du logiciel. Elle n’établit pas quel calendrier était historiquement utilisé en Chine. Testez les bornes prises en charge et le traitement des dates situées en dehors. Une plage de dates civiles diffère également d’une plage d’années lunaires complètes, dont les limites tombent à d’autres jours.

Enregistrez chaque résultat sous la forme complète suivante : date civile et convention calendaire, année lunaire, numéro du mois lunaire, indicateur intercalaire et jour lunaire. Distinguez le numéro du mois de sa position dans l’année : le sixième mois intercalaire est le septième mois dans l’ordre chronologique, mais son numéro reste six.

Les cas de test

Les vérifications de dates exactes

Ces dates couvrent le Nouvel An chinois, un jour intercalaire grégorien valide et les deux extrémités de mois lunaires ordinaires et intercalaires. Dans ce tableau, le millésime de l’année lunaire est l’année grégorienne dans laquelle celle-ci commence. « Ordinaire » signifie que l’indicateur intercalaire est faux.

Date grégorienneAnnée lunaireMoisTypeJour lunaire
2024-02-09202312Ordinaire30
2024-02-1020241Ordinaire1
2024-02-2920241Ordinaire20
2025-07-2420256Ordinaire30
2025-07-2520256Intercalaire1
2025-08-2220256Intercalaire29
2025-08-2320257Ordinaire1
2033-12-21203311Ordinaire30
2033-12-22203311Intercalaire1
2034-01-19203311Intercalaire29
2034-01-20203312Ordinaire1
2034-02-1920341Ordinaire1

Effectuez la conversion de chaque date dans les deux sens. La conversion grégorien-lunaire doit produire les quatre champs lunaires, et la conversion lunaire-grégorien doit retrouver la date indiquée. Testez ensuite toute la succession autour de la limite, et pas seulement son premier jour. Cela distingue un début de mois erroné d’un libellé d’affichage qui omet l’indicateur intercalaire.

Un aller-retour ne suffit pas à établir l’exactitude. Deux fonctions peuvent partager la même table erronée tout en s’inversant parfaitement. La comparaison avec des valeurs attendues indépendantes constitue une vérification distincte. Une comparaison exhaustive doit consigner le nombre de dates comparées, la référence utilisée et chaque divergence.

Les vérifications de structure et de saisie

VérificationComportement attendu
Avancer à partir du dernier jour d’un mois lunaireAtteindre le premier jour du mois chronologique suivant, avec le bon numéro de mois, le bon indicateur intercalaire et la bonne année lunaire
Passer d’un mois ordinaire à son mois intercalaireRépéter le numéro du mois et faire passer l’indicateur intercalaire à vrai
Passer d’un mois intercalaire au mois suivantEffacer l’indicateur intercalaire et avancer le numéro du mois, y compris tout changement d’année nécessaire
Demander le jour 30 du sixième mois intercalaire de 29 jours en 2025Rejeter cette date lunaire inexistante
Demander un mois intercalaire dans une année où il n’existe pasRejeter la date plutôt que lui substituer le mois ordinaire
Saisir le 29 février 2000, puis le 29 février 2100Accepter la première date grégorienne et rejeter la seconde
Saisir le 29 février 1500 selon la convention julienne de l’AtlasL’accepter comme date julienne valide
Avancer d’un jour civil à partir du 1582-10-04 selon la convention de transition de l’AtlasAtteindre le 1582-10-15, exactement un jour écoulé plus tard
Convertir une date valide en date lunaire, puis revenir à la date initialeRetrouver la date d’origine sans perdre l’identité du mois intercalaire

Le calendrier julien ajoute un jour intercalaire tous les quatre ans. La règle grégorienne exclut les années séculaires, sauf si elles sont divisibles par 400 : c’est pourquoi un test de jour intercalaire doit préciser le calendrier civil.

Les tests de rejet décrivent une interface stricte de saisie de dates. Une bibliothèque sous-jacente peut aussi proposer une normalisation documentée, par exemple reporter un jour hors limites dans le mois suivant. Testez ces comportements séparément au lieu de prendre une valeur normalisée pour la saisie originale.

Les vérifications de l’interface

Testez le changement de langue, l’actualisation du navigateur, la navigation entre les mois et l’entrée de l’Almanach séparément des fonctions de conversion. Un changement de langue doit conserver la date sélectionnée et le mois affiché. Parcourir un autre mois doit conserver le jour sélectionné jusqu’au choix d’un nouveau jour. Vérifiez que l’entrée de l’Almanach s’ouvre sur la date grégorienne locale de l’appareil et qu’une page permanente de date conserve sa date civile écrite dans un autre fuseau horaire.

Incluez un instant de test où la date locale de l’appareil diffère de la date de référence du calendrier. Cela permet de détecter l’erreur consistant à utiliser l’heure de référence astronomique pour choisir la date de l’Almanach, ou l’horloge du navigateur pour reconstituer les limites des mois lunaires.

Les termes solaires et les limites de période

Une comparaison de termes solaires doit préciser l’identité du terme, la date civile, l’heure, la référence horaire et la précision publiée. Ramenez les deux valeurs au même calendrier civil et à la même référence horaire avant de les comparer. Une heure publiée à la minute ne permet pas d’établir une concordance à la seconde.

Testez la date calendaire attribuée séparément de la tolérance sur l’horodatage. Une différence inférieure à une minute peut être acceptable pour un affichage arrondi tout en plaçant un événement du mauvais côté de minuit. Documentez toute incertitude connue pour cette limite particulière au lieu d’élargir la tolérance pour toutes les dates.

Incluez une nouvelle lune et un terme principal survenant à la même date de référence. Le terme appartient au nouveau mois calendaire même si son instant précède la conjonction. Un test fondé uniquement sur l’ordre des horodatages des événements peut manquer cette distinction.

Pour la numérotation des mois intercalaires, incluez la séquence 2033–2034. Le huitième mois ordinaire de 2033 et le premier mois de 2034 n’ont pas de terme principal, tandis que le mois intercalaire situé entre les deux porte le numéro onze. Un calcul qui traite chaque mois sans terme principal comme intercalaire échouera à ces vérifications.

Les vérifications de l’almanach et des dates historiques

Les classifications de l’almanach

Yi signifie activités propices et Ji activités à éviter. Une concordance sur une nouvelle lune ou une date lunaire ne valide pas ces listes. Testez leurs règles de consultation à partir de la convention d’almanach ou du jeu de données choisi, puis vérifiez séparément les libellés anglais des activités. Un résultat explicite « aucune » doit aussi rester distinct de données manquantes.

Lorsqu’une classification de l’almanach change à un terme solaire, consignez si sa limite est le début du jour calendaire de ce terme ou son instant exact. Testez les deux côtés de la limite choisie. Ces classifications mensuelles ne changent pas nécessairement au début d’un mois lunaire.

Le Ganzhi, cycle des troncs et des branches, exige lui aussi une limite d’année déclarée. Une désignation annuelle fondée sur le Nouvel An chinois et une autre fondée sur le Début du printemps, ou Lichun, peuvent différer dans l’intervalle entre ces limites. Comparez chaque champ selon sa convention indiquée.

La conversion historique

Pour un document historique, établissez sa dynastie ou son année d’ère, sa localité, la désignation du mois, la mention intercalaire et tout jour Ganzhi enregistré avant de choisir une méthode de conversion. Les calendriers anciens utilisaient des méthodes astronomiques et des conventions horaires différentes. Un calcul moderne étendu vers le passé peut donc différer du calendrier réellement utilisé pour le document.

Conservez la transcription, son interprétation et la date convertie dans des champs distincts. Lorsqu’un document fournit à la fois une date numérotée et un jour Ganzhi, vérifiez leur concordance plutôt que d’en écarter un pour faire correspondre l’autre.

Années 1–2100 de notre ère

Politique de confidentialité