=head1 NOM DateTime::Calendar::Christian - Dates dans le calendrier chrétien =head1 RÉSUMÉ use DateTime::Calendar::Christian; $dt = DateTime::Calendar::Christian->new( year => 1752, month => 10, day => 4, reform_date => $datetime ); =head1 DESCRIPTION DateTime::Calendar::Christian implémente la combinaison des calendriers julien et grégorien. Cf. L pour la documentation de la plupart des méthodes. =head1 CONTEXTE HISTORIQUE Le calendrier julien, introduit à l'époque des Romains, repose sur une année durant en moyenne 365,25 jours, soit un excès de 0,03 jours par rapport à la valeur correcte. Lorsque le cumul de ce décalage a atteint environ 10 jours, le pape Grégoire XIII a réformé le calendrier en introduisant une nouvelle règle pour les années bissextiles. Pour compenser le décalage existant, 10 jours furent supprimés du mois d'octobre 1582. Dans la plupart des pays, la date de basculement fut postérieure à octobre S<1582 ;> le Royaume-Uni changea en 1752 et la Russie attendit 1918 pour changer. =head1 MÉTHODES La présente documentation ne décrit que les méthodes qui diffèrent de celles de DateTime. Cf. L pour les autres méthodes. =over 4 =item * new( ... ) Outre les paramètres usuels ("year", "month", "day", "hour", "minute", "second", "nanosecond", "fractional_seconds", "language" et "time_zone"), cette méthode de classe admet un paramètre supplémentaire, C. Ce paramètre peut être un objet DateTime (ou un objet susceptible d'être converti en objet DateTime). Il représente la première date où le calendrier grégorien a été en vigueur. Ce paramètre peut également être une chaîne de caractères, représentant une localisation géographique, par exemple C<'Italy'> pour l'Italie. Si cette méthode est utilisée comme une méthode d'instance et que l'on ne fournit pas de paramètre C, l'objet créé utilise la même date de réforme que l'objet sur lequel le constructeur a été appelé. Cela vous permet d'avoir des S<« générateurs> de S, implémentant un calendrier avec une date de réforme S $calendrier_anglais = DateTime::Calendar::Christian( reform_date => DateTime->new( year => 1752, month => 9, day => 14 ) ); ou, de manière S<équivalente :> $calendrier_anglais = DateTime::Calendar::Christian( reform_date => 'UK' ); Et vous pouvez utiliser ce générateur pour créer des dates utilisant implicitement la même date de S $naissance = $calendrier_anglais->new( year => 1732, month => 2, day => 22 ); $mort = $calendrier_anglais->new( year => 1799, month => 12, day => 14 ); Si vous indiquez une date parmi celles qui ont été supprimées à l'occasion de la réforme, le module interprète cette date comme une date grégorienne, puis la convertit au calendrier julien. Ce comportement est susceptible de changer dans une version ultérieure. Si une date peut s'interpréter simultanément comme une date julienne et une date grégorienne, le module la considérera julienne. C'est un bug. =item * from_epoch Cette méthode accepte un paramètre supplémentaire C. Notez que les valeurs I donnent des dates grégoriennes pour la plupart des systèmes (S). =item * reform_date Renvoie la date de réforme du calendrier. C'est un objet DateTime. =item * is_julian, is_gregorian Renvoie un booléen indiquant si l'objet DateTime est dans un calendrier ou dans l'autre. =item * is_leap_year Cette méthode renvoie un booléen indiquant si l'année d'un objet DateTime est une année bissextile. Si l'objet DateTime se trouve dans l'année où la réforme a eu lieu, la méthode signale si cette année comportait un jour bissextile, indépendamment du fait que le jour bissextile et l'objet DateTime se trouvent dans le même calendrier ou dans des calendriers différents. =item * days_in_year Renvoie le nombre de jours de l'année. Vaut 365 ou 366, sauf au cours de l'année où la réforme a été appliquée. =item * gregorian_deviation( [$datetime] ) Cette méthode renvoie le nombre de jours de décalage entre le calendrier grégorien et le calendrier julien. Si le paramètre C<$datetime> est transmis, c'est lui qui sera utilisé pour calculer le résultat. Dans ce cas, la méthode peut être appelée en tant que méthode de classe. =back =head1 BUGS =over 4 =item * Des problèmes se produisent pour des calendriers qui basculeraient de julien à grégorien avant l'an 200 ap. J.-C. ou après l'an 4000 ap. J.-C. Avant 200 ap. J.-C., le basculement engendre des doublons de dates. Après 4000 ap. J.-C., le basculement risque de provoquer la disparition complète d'un mois. Précisons que le module sait très bien gérer les dates-heures antérieures à 200 ap. J.-C. et postérieures à 4000 ap. J.-C. Le problème concerne les I antérieures à 200 ap. J.-C. ou postérieures à 4000 ap. J.-C. =item * Il se peut que certaines fonctions donnent un mauvais résultat pour l'année de la réforme du calendrier. Le cas est connu pour la fonction L. Si vous constatez le problème avec d'autres fonctions, merci de m'en avertir. =back =head1 SUPPORT Le support de ce module est assuré par la liste de diffusion C. Cf. http://lists.perl.org/ pour les détails. Si vous ne pensez pas maîtriser suffisamment la langue anglaise, faites-vous aider par l'un de vos proches ou éventuellement par le traducteur. =head1 AUTEUR Eugene van der Pijll (C arobase C point C). =head1 TRADUCTION Cette traduction concerne la version 0.04 de C. Traduit par Jean Forget (C arobase C point C) le 2004-06-15. =head1 COPYRIGHT Copyright (c) 2003 Eugene van der Pijll pour la version originale. Tous droits réservés. Ce logiciel est un logiciel S vous pouvez le redistribuer et le modifier aux mêmes conditions que Perl lui-même. Copyright (c) 2004 Jean Forget et les Mongueurs de Perl pour la traduction française. Tous droits réservés. =head1 VOIR ÉGALEMENT L, L La liste de distribution C http://datetime.perl.org/ http://datetime.mongueurs.net/ =cut