Date::Chinese - Calculate dates in the Chinese calendar


Date-Chinese documentation Contained in the Date-Chinese distribution.

Index


Code Index:

NAME

Top

Date::Chinese - Calculate dates in the Chinese calendar

SYNOPSIS

Top

  use Date::Chinese;

  $year = yearofthe( 1999 ); # "Year of the hare, earth"

DESCRIPTION

Top

Please note that the API of this module is guaranteed to change in future versions. I'll hopefully be adding more details about the date, rather than just the year.

You should also note that the Chinese new year does not conicide with the Gregorian new year, so the determination of what year it is in the Chinese calendar is only going to be correct for a portion of the Gregorian year.

SUPPORT

Top

datetime@perl.org

AUTHOR

Top

	Rich Bowen
	CPAN ID: RBOW
	rbowen@rcbowen.com
	http://www.rcbowen.com

COPYRIGHT

Top

SEE ALSO

Top

 perl(1).
 http://dates.rcbowen.com/

About the Chinese calendar

Top

Reference: The Oxford Companion to the Year - Bonnie Blackburn and Leofranc Holford-Strevens. Pg 696-707

The Chinese calendar is a 19 year cycle. Seven of these 19 years have 13 months, and the rest have 12. There's a whole heck of a lot more to it than the 12 animals that you see on your placemat at your favorite Chinese restaurant.

There is a cycle of 10 stems and 12 branches. Each stem has associated with it an element (wood, fire, earth, metal, water) a yang (fir, kindling, hill, weapons, waves) a yin (bamboo, lamp-flame, plain, kettle, brooks) a cardinal point (east, south, centre, west, north) and a planet (Jupiter, Mars, Saturn, Venus, Mercury).

Likewise, each branch has associated with it an animal, an element, a double-hour, a compass point, and a sign of the zodiac.

Each of these various cycles are going on at the same time, and so interact with each other to produce combinations of all of these different components. And various combinations mean various things.

There are, of course, many folks that have more knowledge of how this all works than I do. I just used to be a mathematician.

http://www.math.nus.edu.sg/aslaksen/calendar/chinese.shtml seems like a good place to start, but there are many other very informative sites on the net.


Date-Chinese documentation Contained in the Date-Chinese distribution.

#$Header: /cvsroot/date-chinese/lib/Date/Chinese.pm,v 1.10 2002/08/29 23:43:33 rbowen Exp $
package Date::Chinese;
use strict;

BEGIN {
	use Exporter ();
	use vars qw ($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
	$VERSION     = (qw'$Revision: 1.12 $')[1];
	@ISA         = qw (Exporter);
	@EXPORT      = qw ( yearofthe );
	@EXPORT_OK   = qw ();
	%EXPORT_TAGS = ();
}

sub yearofthe {
    my $year = shift;

    my $cycle = ( $year - 3 )%60;

    my $stem = $cycle % 10; # Not using this right now
    # my @stems = qw(jia yi bing ding wu ji geng xin ren gui);
    my @stems = qw(wood wood fire fire earth earth metal metal water water);
    $stem = $stems[$stem-1];

    my $branch = $cycle % 12; 
    # my @branches = qw( zi chou yin mao chen si 
    #                    wu wei shen you xu hai );
    my @branches = qw(rat ox tiger hare dragon snake horse
                      sheep monkey fowl dog pig );
    my $yearofthe = $branches[$branch - 1];

    return "Year of the $yearofthe, $stem";
}

1;