On Tue, 4 Apr 2006, Mike Blezien wrote:
> I am trying to come up with a function, or formula calculation, to
> determine the total days of a given month, IE: April which has 30
> days, Feb has 28 days, March has 31 days... etc
>
> Is there way to do this with Perl
Don't calculate it. Just use a lookup table in a hash.
Trivially, and not 100% accurate but maybe good enough:
my %months = (
jan => 31,
feb => 28,
mar => 31,
apr => 30,
jun => 30,
jul => 31,
aug => 31,
sep => 30,
oct => 31,
nov => 30,
dec => 31
);
Depending on what you're doing, you may have to handle leap years. If
you do, you can do something like this instead:
if (leap_year($year)) {
my %months = (
jan => 31,
feb => 29,
...
);
} else {
my %months = (
jan => 31,
feb => 28,
...
);
}
(In this example, leap_year($year) is left as an exercise. :-)
For a lot of problems like this, where you know that there's a
one-to-one mapping between things -- as, in this case, months and day
counts -- the easiest way is just a hash-based lookup table.
You can often solve these things with some kind of elaborate
calculations -- say, to compute the day that a lunar-calendar based
holiday (Easter, Hanukkah, Ramadan, Chinese New Year, etc) -- but a lot
of the time it ends up being easier to just figure out the mappings in
advance and hard-code that either in your script or in a resource data
file that your script loads at run time.
--
Chris Devers
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>