Well, what you made works, but I think it's somewhat missing the point.
Yeah, I had that nagging feeling all along ;) good thing you took a look.
But your object does not actually represent the Japanese calendar. What I'm getting at is that given a DateTime::Calendar::Japanese object, I'd expect a method like ->year to return the year as it is numbered in the _Japanese_ calendar, not in the Gregorian calendar!
So Japan uses the Gregorian calendar, except notations differ. This was the original reason why I dumped this era type of thing into the Format:: module.
I'm not sure what else I would put in a Japanese calendar? (Now that I know Miyagawa-san is in this list, he may be able to help me here :)
So for example,
my $cal = DT::Calendar::Japanese->new(); print $cal->year, "\n";
What should it do: return the year in Japanese characters? or, I guess it could be something like "Heisei 15"... hmm.
This is how the DT::Calendar::Japanese class should work. In addition, you'll also want methods like ->era, ->regime, possibly ->kigen, and methods to return the major and minor solar terms.
Is "solar term" = "koyomi"? And when you say "kigen", what are we talking about...
Hmm, so is DT::Calendar::Japanese supposed to do things like
$cal->year; # "Heisei 15" $cal->month; # "Nyo-tuki" $cal->day; # "2 day" (in Japanese)
Is that what you're saying? I just thought that would go to the formatter.
Or, are we talking about the Lunar Year system?
If you do want to do this, let's collaborate, because I want to create DateTime::Calendar::Chinese, and they share a lot of core calculations. We might be able to put these in some sort of DateTime::Algorithm::ChineseJapanese module that we could both include as a prereq.
That's cool!
I'm just still a bit confused :)
--d