1DateTime::Calendar::MayUasne(r3)Contributed Perl DocumenDtaatteiToinme::Calendar::Mayan(3)
2
3
4

NAME

6       DateTime::Calendar::Mayan - The Mayan Long Count, Haab, and Tzolkin
7       calendars
8

SYNOPSIS

10          use DateTime::Calendar::Mayan
11
12          my $dtcm = DateTime::Calendar::Mayan->new(
13               baktun  => 12,
14               katun   => 19,
15               tun     => 10,
16               uinal   => 2,
17               kin     => 8,
18               # alternate epoch
19               epoch   => DateTime->new(
20                       year    => -3113,
21                       month   => 8,
22                       day     => 13,
23                   ),
24           );
25
26          print $dtcm->date;
27          # prints 12.19.10.2.8
28          print $dtcm->haab;
29          # prints 3 Uayeb
30          print $dtcm->tzolkin;
31          # prints 3 Oc
32

DESCRIPTION

34       An implementation of the Mayan Long Count, Haab, and Tzolkin calendars
35       as defined in "Calendrical Calculations The Millennium Edition".
36       Supplemented by "Frequently Asked Questions about Calendars".
37

METHODS

39       •   new( baktun => $scalar, ..., epoch => $object )
40
41           Accepts a hash representing a date on the Long Count calendar and a
42           "DateTime::Calendar" object specifying an alternate epoch.  All
43           keys are optional.
44
45              The units are:
46              kin   = 1 day
47              uinal = 20 days
48              tun   = 360 days
49              katun = 7200 days
50              baktun = 144000 days
51
52           In the future pictuns, calabtuns, kinchiltuns, and alautuns may be
53           accepted.
54
55       •   now
56
57           Alternate constructor.  Uses DateTime->now to set the current date.
58
59       •   today
60
61           Alternate constructor.  Uses DateTime->today to set the current
62           date.
63
64       •   clone
65
66           This object method returns a replica of the given object.
67
68       •   from_object( object => $object )
69
70           Accepts a "DateTime::Calendar" object.  Although this calendar
71           doesn't support time it will preserve the time value of objects
72           passed to it.  This prevents a loss of precision when chaining
73           calendars.
74
75           Note: Language support is not implemented.
76
77       •   utc_rd_values
78
79           Returns the current UTC Rata Die days, UTC Rata Die seconds, and
80           nanoseconds as a three element list.
81
82       •   from_epoch( epoch => $scalar )
83
84           Creates a new object from a number of seconds relative to midnight
85           1970-01-01.
86
87       •   epoch
88
89           Returns the number of seconds since midnight 1970-01-01.
90
91       •   set_mayan_epoch( object => $object )
92
93           Accepts a "DateTime::Calendar" object.  The epoch is set to this
94           value on a per object basis
95
96           The default epoch is:
97
98           Goodman-Martinez-Thompson
99              Aug. 11, -3113 / Sep. 6, 3114 B.C.E. / 584,283 JD
100
101       •   mayan_epoch
102
103           Returns a "DateTime::Calendar::Mayan" object set to the current
104           Mayan epoch.
105
106       •   date
107
108       •   bktuk
109
110       •   long_count( $scalar )
111
112           Returns the Long Count calendar date.  Think DateTime::ymd.  Like
113           ymd this method also accepts an optional field separator string.
114
115       •   haab( $scalar )
116
117           Returns the Haab calendar date.  Accepts an optional field
118           separator string.
119
120       •   tzolkin( $scalar )
121
122           Returns the Tzolkin calendar date.  Accepts an optional field
123           separator string.
124
125       •   baktun
126
127       •   katun
128
129       •   tun
130
131       •   uinal
132
133       •   kin( $scalar )
134
135           Gets/Sets the long count value of the function name.
136
137       •   set_baktun
138
139       •   set_katun
140
141       •   set_tun
142
143       •   set_uinal
144
145       •   set_kin( $scalar )
146
147           Aliases to the combined accessor/mutators.
148
149       •   set( baktun => $scalar, ... )
150
151           Accepts a hash specifying new long count values.  All units are
152           optional.
153
154       •   add
155
156       •   subtract( baktun => $scalar, ... )
157
158           Accepts a hash specifying values to add or subject from the long
159           count.  All units are optional.
160
161       •   add_duration
162
163       •   subtract_duration( $object )
164
165           Accepts a "DateTime::Duration" object and either adds or subtracts
166           it from the current date.   See the DateTime::Duration docs for
167           more details.
168

BACKGROUND

170       Please see:
171
172       Chapter 10 of Calendarical Calculations "The Millennium Edition".
173
174       and
175
176       Chapter 7 of Frequently Asked Questions about Calendars.
177          http://www.tondering.dk/claus/cal/node8.html
178

GOTCHAS

180       The Long Count calendar is cyclical and it is possible to have
181       different dates in other calendars that convert to be the same Long
182       Count date.  Under this calendar the dates 0.0.0.0.0 and 13.0.0.0.0 are
183       equivalent.
184
185       The Long Count calendar will next roll over in late 2012 (Gregorian).
186       In anticipation of this Long Count dates input as 0-12.*.*.*.* will
187       convert to Gregorian dates in the Mayan year that started in -3113
188       (Gregorian).  Long Count dates input as 13.*.*.*.* will convert to
189       Gregorian dates in the Mayan year that start in 2012 (Gregorian).
190
191       Example:
192
193          use DateTime;
194          use DateTime::Calendar::Mayan;
195
196          my $dtcm = DateTime::Calendar::Mayan->new( baktun => 0 );
197          print $dtcm->date, "\n";
198          print DateTime->from_object( object => $dtcm )->ymd, "\n";
199
200          $dtcm->set( baktun => 13);
201          print $dtcm->date, "\n";
202          print DateTime->from_object( object => $dtcm )->ymd, "\n";
203
204       Will print:
205
206          13.0.0.0.0
207          -3113-08-11
208          13.0.0.0.0
209          2012-12-21
210
211       As you can see the Long Count dates are identical but the Gregorian
212       equivalent dates are different.
213
214       Support for a count of Mayan "years" or "cycles" allowing accurate
215       conversion to/from Gregorian dates may be added to this module in the
216       future.  This would be an extension to the historical Long Count
217       calendar.
218

CREDITS

220       Dave Rolsky (DROLSKY) for the DateTime project and carrying us this
221       far.
222
223       Eugene van der Pijll (PIJLL) for DateTime::Calendar::Julian which I
224       looked at more then once.
225
226       Calendrical Calculations "The Millennium Edition" By Edward M. Reingold
227       & Nachum Dershowitz.  (ISBN 0-521-77752-6 paperback)
228          http://www.calendarists.com
229
230       Abigail (ABIGAIL) for Date::Maya from which I confirmed the algorithm
231       for Mayan years.
232
233       "Frequently Asked Questions about Calendars" by Claus Tondering.
234          http://www.tondering.dk/claus/calendar.html
235

SUPPORT

237       Support for this module is provided via the datetime@perl.org email
238       list. See http://lists.perl.org/ for more details.
239

AUTHOR

241       Joshua Hoblitt <jhoblitt@cpan.org>
242
244       Copyright (c) 2003 Joshua Hoblitt.  All rights reserved.  This program
245       is free software; you can redistribute it and/or modify it under the
246       same terms as Perl itself.
247
248       The full text of the license can be found in the LICENSE file included
249       with this module.
250

SEE ALSO

252       datetime@perl.org mailing list
253
254       http://datetime.perl.org/
255
256
257
258perl v5.36.0                      2022-07-22      DateTime::Calendar::Mayan(3)
Impressum