in reply to Time::Local - calculate months elapsed

Apart from the suggestions already made, you can just do the calculation of years and months if you're just interested in "whole" month numbers, and bypass the issue of what is a month altogether:
sub months { my (undef,undef,undef,$day,$month,$year) = localtime; $_[0] =~ m#^(\d+)/(\d+)/(\d+)$#; (12 * (1900 + $year - $1)) + 1 + $month - $2 - ($day < $3); } print months( "1999/06/30" ),$/; print months( "2004/01/24" ),$/; print months( "2004/01/25" ),$/; __END__ 55 1 0
Please note that I don't think "56" is the correct answer for today. It's still 6 days from the 30th, and only then we'd be 56 months from the given date. Check the other examples.

Of course, all of this doesn't take into account anything like timezones. But if you're only interested in whole month granularity, I think that's pretty ok.

Liz

Replies are listed 'Best First'.
Re: Re: Time::Local - calculate months elapsed
by Lori713 (Pilgrim) on Feb 24, 2004 at 21:11 UTC
    You're absolutely correct. I'm only really interested in whole months. The other solutions are equally workable but you've pointed out something I hadn't thought of: we're not quite at the end of the month. So, I think your solution will probably nail it for me most accurately.

    Thanks to all who responded!

    Lori