The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

DateTime::Calendar::Mayan - The Mayan Long Count Calendar

SYNOPSIS

   use DateTime::Calendar::Mayan
   # 2003-04-01 UTC
   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->bktuk; 
   # prints 12.19.10.2.8

DESCRIPTION

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

METHODS

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

    Accepts a hash representing the number of days since the Mayan epoch 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 and seconds as a two 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

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

  • bktuk( $scalar )

    Think DateTime::ymd. Like ymd this method also accepts an optional field separator string.

  • date

    Aliased to bktuk.

  • 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.

BACKGROUND

TODO :)

CREDITS

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)

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

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

SUPPORT

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

AUTHOR

Joshua Hoblitt <jhoblitt@cpan.org>

COPYRIGHT

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.

SEE ALSO

datetime@perl.org mailing list

http://datetime.perl.org/

1 POD Error

The following errors were encountered while parsing the POD:

Around line 542:

Unknown directive: =itme