in reply to Finding gaps in date ranges
Tested on the bad and good arrays, you should be able to modify it for your needs easily enough...my $error = 0; my @tmp = sort datesort qw( 2000-4 2000-2 2000-1 2000-12 2001-1 2002-1 +2 1999-12 ); my($year,$month) = split '-', $tmp[0]; for(my $i = 1; $i < @tmp; $i++) { if(++$month == 13) { $month = 1; $year++; } if($tmp[$i] ne "$year-$month") { print "ERROR! gap at '$year-$month', '$tmp[$i]' found!\n"; $error = 1; last; } } print "Success\n" unless $error; sub datesort { my($a1,$a2) = split '-', $a; my($b1,$b2) = split '-', $b; $a1 <=> $b1 or $a2 <=> $b2; }
it would be shorter if your dates were zero padded.
Update on afterthought I should say what it does...
it sorts the date array (could be an array of hash keys), it
then starts at the first, or earliest one, it goes through
the array adding one to the month and wrapping the year and setting month to 1 if
the month hits 13. it goes till it finds a date it didnt expect, or
gets to the end of the array sucessfully. Pretty simple,
needed the special sort since months were not zero padded.
- Ant
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
(Ovid) Re(2): Finding gaps in date ranges
by Ovid (Cardinal) on May 11, 2001 at 00:37 UTC | |
by suaveant (Parson) on May 11, 2001 at 00:51 UTC | |
by suaveant (Parson) on May 11, 2001 at 00:38 UTC |