GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
DateTime::Calendar::Mayan(3) User Contributed Perl Documentation DateTime::Calendar::Mayan(3)

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

   use DateTime::Calendar::Mayan

   my $dtcm = DateTime::Calendar::Mayan->new(
        baktun  => 12,
        katun   => 19,
        tun     => 10,
        uinal   => 2,
        kin     => 8,
        # alternate epoch
        epoch   => DateTime->new(
                year    => -3113,
                month   => 8,
                day     => 13,
            ),
    );

   print $dtcm->date; 
   # prints 12.19.10.2.8
   print $dtcm->haab; 
   # prints 3 Uayeb
   print $dtcm->tzolkin; 
   # prints 3 Oc

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

  • new( baktun => $scalar, ..., epoch => $object )

    Accepts a hash representing a date on the Long Count calendar and a "DateTime::Calendar" object specifying an alternate epoch. All keys are optional.

       The units are:
       kin   = 1 day
       uinal = 20 days
       tun   = 360 days
       katun = 7200 days
       baktun = 144000 days
        

    In the future pictuns, calabtuns, kinchiltuns, and alautuns may be accepted.

  • now

    Alternate constructor. Uses DateTime->now to set the current date.

  • today

    Alternate constructor. Uses DateTime->today to set the current date.

  • clone

    This object method returns a replica of the given object.

  • from_object( object => $object )

    Accepts a "DateTime::Calendar" object. Although this calendar doesn't support time it will preserve the time value of objects passed to it. This prevents a loss of precision when chaining calendars.

    Note: Language support is not implemented.

  • utc_rd_values

    Returns the current UTC Rata Die days, UTC Rata Die seconds, and nanoseconds as a three element list.

  • from_epoch( epoch => $scalar )

    Creates a new object from a number of seconds relative to midnight 1970-01-01.

  • epoch

    Returns the number of seconds since midnight 1970-01-01.

  • set_mayan_epoch( object => $object )

    Accepts a "DateTime::Calendar" object. The epoch is set to this value on a per object basis

    The default epoch is:

    Goodman-Martinez-Thompson Aug. 11, -3113 / Sep. 6, 3114 B.C.E. / 584,283 JD

  • mayan_epoch

    Returns a "DateTime::Calendar::Mayan" object set to the current Mayan epoch.

  • date
  • bktuk
  • long_count( $scalar )

    Returns the Long Count calendar date. Think DateTime::ymd. Like ymd this method also accepts an optional field separator string.

  • haab( $scalar )

    Returns the Haab calendar date. Accepts an optional field separator string.

  • tzolkin( $scalar )

    Returns the Tzolkin calendar date. Accepts an optional field separator string.

  • baktun
  • katun
  • tun
  • uinal
  • kin( $scalar )

    Gets/Sets the long count value of the function name.

  • set_baktun
  • set_katun
  • set_tun
  • set_uinal
  • set_kin( $scalar )

    Aliases to the combined accessor/mutators.

  • set( baktun => $scalar, ... )

    Accepts a hash specifying new long count values. All units are optional.

  • add
  • subtract( baktun => $scalar, ... )

    Accepts a hash specifying values to add or subject from the long count. All units are optional.

  • add_duration
  • subtract_duration( $object )

    Accepts a "DateTime::Duration" object and either adds or subtracts it from the current date. See the DateTime::Duration docs for more details.

Please see:

Chapter 10 of Calendarical Calculations "The Millennium Edition".

and

Chapter 7 of Frequently Asked Questions about Calendars. http://www.tondering.dk/claus/cal/node8.html

The Long Count calendar is cyclical and it is possible to have different dates in other calendars that convert to be the same Long Count date. Under this calendar the dates 0.0.0.0.0 and 13.0.0.0.0 are equivalent.

The Long Count calendar will next roll over in late 2012 (Gregorian). In anticipation of this Long Count dates input as 0-12.*.*.*.* will convert to Gregorian dates in the Mayan year that started in -3113 (Gregorian). Long Count dates input as 13.*.*.*.* will convert to Gregorian dates in the Mayan year that start in 2012 (Gregorian).

Example:

   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";

Will print:

   13.0.0.0.0
   -3113-08-11
   13.0.0.0.0
   2012-12-21

As you can see the Long Count dates are identical but the Gregorian equivalent dates are different.

Support for a count of Mayan "years" or "cycles" allowing accurate conversion to/from Gregorian dates may be added to this module in the future. This would be an extension to the historical Long Count calendar.

Dave Rolsky (DROLSKY) for the DateTime project and carrying us this far.

Eugene van der Pijll (PIJLL) for DateTime::Calendar::Julian which I looked at more then once.

Calendrical Calculations "The Millennium Edition" By Edward M. Reingold & Nachum Dershowitz. (ISBN 0-521-77752-6 paperback) http://www.calendarists.com

Abigail (ABIGAIL) for Date::Maya from which I confirmed the algorithm for Mayan years.

"Frequently Asked Questions about Calendars" by Claus Tondering. http://www.tondering.dk/claus/calendar.html

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

Joshua Hoblitt <jhoblitt@cpan.org>

Copyright (c) 2003 Joshua Hoblitt. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

The full text of the license can be found in the LICENSE file included with this module.

datetime@perl.org mailing list

http://datetime.perl.org/

2022-04-08 perl v5.32.1

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.