Hello
I want to covert between solar and lunisolar dates.
so I tried with the following sample code.
--------------------cut----------------------
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
use DateTime::Calendar::Chinese;
# solar:2004-03-20 , lunisolar: 2004-02-30
my $d=DateTime->new(year=>2004,month=>3,day=>20,time_zone=>'Asia/Taipei');
my $l=DateTime::Calendar::Chinese->from_object(object=>$d);
print $l->cycle," ",$l->cycle_year,"\n";
print +(-2697+$l->cycle*60+$l->cycle_year)," ",$l->month," ",$l->day,,"
",$l->leap_month,"\n";
# solar:2004-03-21 , lunisolar: 2004-02-01 leap month
my $d2=DateTime->new(year=>2004,month=>3,day=>21,time_zone=>'Asia/Taipei');
my $l2=DateTime::Calendar::Chinese->from_object(object=>$d2);
print $l2->cycle," ",$l2->cycle_year,"\n";
print +(-2697+$l2->cycle*60+$l2->cycle_year)," ",$l2->month,"
",$l2->day,," ",$l2->leap_month,"\n";
# lunisolar: 2004-02-30, solar:2004-03-20
my
$l3=DateTime::Calendar::Chinese->new(cycle=>78,cycle_year=>21,month=>2,day=>30,time_zone=>'Asia/Taipei');
my $d3=DateTime->from_object(object=>$l3);
print $d3->year," ",$d3->month," ",$d3->day,"\n";
# lunisolar: 2004-02-01 leap_month, solar:2004-03-21
my
$l4=DateTime::Calendar::Chinese->new(cycle=>78,cycle_year=>21,month=>2,day=>1,leap_month=>1,time_zone=>'Asia/Taipei');
my $d4=DateTime->from_object(object=>$l4);
print $d4->year," ",$d4->month," ",$d4->day,"\n";
--------------------cut----------------------
As you can see the conversion table at
http://www.sinica.edu.tw/ftms-bin/kiwi1/luso.sh?lstype=1&yy=2004&mm=3&dd=21
I expected
78 21
2004 2 30 0
78 21
2004 2 1 1
2004 3 20
2004 3 21
but output was not what I expected. :(
78 21
2004 2 30 0 (Correct)
78 21
2004 2 1 0 (Wrong)
2004 4 18 (Wrong)
2004 4 19 (Wrong)