Perlfunc: days_in_month
Code to figure out the days in a given month. Of course it's leap year aware.
sub days_in_month() {
use Time::Local;
my ($month,$year) = @_;
if ($month < 1 || $month > 31) { return 0; }
if ($year < 1970 || $year > 2036) { return 0; }
my $secs = timelocal(0,0,13,1,$month - 1,$year);
for (my $i = 27; $i < 32; $i++) {
my $new_month = ((localtime($secs + ($i * 86400)))[4]) + 1;
if ($new_month != $month) { return $i; }
}
}