Date::Manip should do what you want:
#!/usr/bin/perl use strict; use warnings; use Date::Manip; my @dates; while( <DATA> ) { chomp; push( @dates, ParseDate( $_ ) ); } @dates = sort @dates; my $oldest = $dates[0]; foreach my $current ( @dates ) { my $diff = DateCalc( $oldest, $current ); print "Diff between ", UnixDate( $oldest, "%m/%d/%y" ), " and ", UnixDate( $current, "%m/%d/%y" ), " is ", Delta_Format( $diff, "approx", 0, "%Mt" ), "\n"; } __DATA__ 06/30/96 08/07/97 09/05/97 12/11/97 03/26/98 07/17/98 10/23/98 11/12/98 01/14/99 04/10/99 05/27/99 02/10/00 03/10/00 03/15/00 03/15/00 03/30/00 06/15/00 07/13/00 08/03/00 09/07/00 09/30/00 12/10/00 01/25/01 02/27/01
Update: If the list is all ready sorted (and you need a bit of golf)
#!/usr/bin/perl use strict; use warnings; use Date::Manip; use List::Util qw( reduce ); my @dates = qw( 06/30/96 08/07/97 09/05/97 12/11/97 03/26/98 07/17/98 10/23/98 11/12/98 01/14/99 04/10/99 05/27/99 02/10/00 03/10/00 03/15/00 03/15/00 03/30/00 06/15/00 07/13/00 08/03/00 09/07/00 09/30/00 12/10/00 01/25/01 02/27/01 ); reduce { print "Diff between $a and $b is ", Delta_Format( DateCalc( $a, $b ) +, "approx", 0, "%Mt" ), "\n"; $a; } @dates;
In reply to Re: compare dates?
by derby
in thread compare dates?
by Anonymous Monk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |