=head1 NOM DateTime::Calendar::Mayan - Les calendriers mayas Haab, Tzolkin et le Compte Long =head1 RÉSUMÉ use DateTime::Calendar::Mayan my $dtcm = DateTime::Calendar::Mayan->new( baktun => 12, katun => 19, tun => 10, uinal => 2, kin => 8, # autre date origine epoch => DateTime->new( year => -3113, month => 8, day => 13, ), ); print $dtcm->date; # affiche 12.19.10.2.8 print $dtcm->haab; # affiche 3 Uayeb print $dtcm->tzolkin; # affiche 3 Oc =head1 DESCRIPTION Ce module implémente les calendriers mayas Haab et Tzolkin et le Compte Long décrits dans I avec quelques ajouts dans I. =head1 MÉTHODES =over 4 =item * new( baktun => $scalar, ..., epoch => $object ) Reçoit un hachage représentant les éléments du Compte Long ainsi qu'un objet C permettant de choisir la date origine du Compte Long. Toutes les clés sont facultatives. Les unités S kin = 1 jour uinal = 20 jours tun = 360 jours katun = 7200 jours baktun = 144000 jours Les pictuns, calabtuns, kinchiltuns et alautuns seront peut-être acceptés dans les versions futures. =item * now Autre constructeur. Utilise DateTime->now pour obtenir la date du jour. =item * today Autre constructeur. Utilise DateTime->today pour obtenir la date du jour. =item * clone Cette méthode renvoie un objet réplique de l'objet de départ. =item * from_object( object => $object ) Reçoit un objet C ou un objet C. Bien que ce module de calendrier ne permet pas d'utiliser l'heure du jour, les informations d'heure provenant de l'objet origine sont conservées. Cela empêche la perte de précision lorsque l'on effectue plusieurs conversions à la suite. S le support de la localisation n'est pas implémenté. =item * utc_rd_values Renvoie une liste de trois éléments, avec le nombre de jours I, les secondes et les nanosecondes, le tout pour le temps UTC. =item * from_epoch( epoch => $scalar ) Crée un nouvel objet à partir du nombre de secondes écoulées depuis le 1970-01-01 à minuit. =item * epoch Renvoie le nombre de secondes écoulées depuis le 1970-01-01 à minuit. =item * set_mayan_epoch( object => $object ) Reçoit un objet C. La date origine du calendrier est fixée en fonction de l'objet transmis. La date origine par défaut S Goodman-Martinez-Thompson Aug. 11, -3113 / Sep. 6, 3114 av. J.-C. / 584_283 JD =item * mayan_epoch Renvoie un objet C correspondant à la date origine. =item * date =item * bktuk =item * long_count( $scalar ) Renvoie la date dans le Compte Long. L'équivalent de C. Et comme C, cette méthode accepte une chaîne facultative permettant de choisir le séparateur de champs. =item * haab( $scalar ) Renvoie la date dans le calendrier Haab. Accepte un paramètre optionnel pour le séparateur de champs. =item * tzolkin( $scalar ) Renvoie la date dans le calendrier Tzolkin. Accepte un paramètre optionnel pour le séparateur de champs. =item * baktun =item * katun =item * tun =item * uinal =item * kin( $scalar ) Permet de consulter ou de mettre à jour la valeur du Compte Long correspondant au nom de la méthode. =item * set_baktun =item * set_katun =item * set_tun =item * set_uinal =item * set_kin( $scalar ) Alias pour les méthodes combinées accesseurs/mutateurs. =item * set( baktun => $scalar, ... ) Reçoit un hachage énumérant les valeurs du Compte Long. Toutes les unités sont facultatives. =item * add =item * subtract( baktun => $scalar, ... ) Reçoit un hachage énumérant les valeurs à additionner au Compte Long ou à soustraire. Toutes les unités sont facultatives. =item * add_duration =item * subtract_duration( $object ) Reçoit un objet C et l'additionne ou le soustrait à la date courante. Cf. la documentation de L pour plus de renseignements. =back =head1 RÉFÉRENCES Veuillez vous référer S<à :> Chapitre 10 de I. et Chapitre 7 des I. http://www.tondering.dk/claus/cal/node8.html =head1 PIÈGES Le Compte Long est cyclique et il est possible de trouver des dates différentes dans un calendrier donné qui sont converties en la même date du Compte Long. Dans ce calendrier, les dates 0.0.0.0.0 et 13.0.0.0.0 sont équivalentes. Le prochain passage à zéro du Compte Long se produira fin 2012 (grégorien). En prévision de cela, les dates saisies avec 0-12.*.*.*.* sont converties en dates grégoriennes dans l'intervalle commençant en -3113 (grégorien). Les dates du Compte Long saisie avec 13.*.*.*.* seront converties en dates grégoriennes postérieures à 2012 (grégorien). Exemple: use DateTime; use DateTime::Calendar::Mayan; my $dtcm = DateTime::Calendar::Mayan->new( baktun => 0 ); print $dtcm->date, "\n"; print DateTime->from_object( object => $dtcm )->ymd, "\n"; $dtcm->set( baktun => 13); print $dtcm->date, "\n"; print DateTime->from_object( object => $dtcm )->ymd, "\n"; S 13.0.0.0.0 -3113-08-11 13.0.0.0.0 2012-12-21 Comme vous pouvez le constater, les dates dans le Compte Long sont identiques, mais les équivalents grégoriens diffèrent. Le support des S<« années »> ou des S<« cycles »> mayas, permettant une conversion exacte entre ce calendrier et le calendrier grégorien, sera peut-être mise en place dans les versions ultérieures de ce module. Cela constituerait une extension au calendrier historique Compte Long. =head1 REMERCIEMENTS Dave Rolsky (DROLSKY) pour le projet DateTime et pour nous avoir emmenés si loin. Eugene van der Pijll (PIJLL) pour son module C que j'ai consulté à plusieurs reprises. Calendrical Calculations "The Millennium Edition" Par Edward M. Reingold & Nachum Dershowitz. (ISBN 0-521-77752-6 paperback) http://www.calendarists.com Abigail (ABIGAIL) pour le module C qui m'a permis d'obtenir confirmation de l'algorithme des années mayas. "Frequently Asked Questions about Calendars" par Claus TE<248>ndering. http://www.tondering.dk/claus/calendar.html =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 la langue anglaise suffisamment, faites-vous aider par l'un de vos proches ou éventuellement par le traducteur. =head1 AUTEUR Joshua Hoblitt (adresse C sur le site C point C) =head1 TRADUCTION Cette traduction concerne la version 0.06 de C. La traduction a été réalisée par Jean Forget (adresse C sur le site C point C) le 2004-07-28. =head1 COPYRIGHT Copyright (c) 2003 Joshua Hoblitt 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. Le texte intégral de la licence en anglais est disponible dans le fichier F fourni dans la distribution de ce module. =head1 VOIR ÉGALEMENT La liste de distribution C http://datetime.perl.org/ http://datetime.mongueurs.net/ =cut