Or TIMTOWDI
my @array = ( [ '03:30', '05:45' ], [ '05:45', '09:15' ], [ '10:00', '11:35' ], [ '11:00', '15:40' ] ); sub hhmm2min { die "Data error $_[0] not in format HH:MM\n" unless $_[0] =~ m/(\d +\d):(\d\d)/; return $1*60+$2; } sub min2hhmm { die "Data error $_[0] > 24:00\n" if $_[0] > 24*60; return sprintf "%02d:%02d", int($_[0]/60), $_[0]%60; } @array = sort{ $a->[0]<=>$b->[0] }map{ [ hhmm2min($_->[0]), hhmm2min($ +_->[1]) ] }@array; my $cur = 0; my @missing = (); for my $r( @array ) { push @missing, [ min2hhmm($cur), min2hhmm( $r->[0] ) ] if $cur < $ +r->[0]; #$cur = $r->[1]; # bug $cur = $r->[1] unless $cur > $r->[1]; } push @missing, [ min2hhmm($cur), '24:00' ] unless $cur == 24*60; use Data::Dumper; print Dumper \@missing; __DATA__ $VAR1 = [ [ '00:00', '03:30' ], [ '09:15', '10:00' ], [ '15:40', '24:00' ] ];
cheers
tachyon
In reply to Re: Re: Determining gaps in time ranges
by tachyon
in thread Determining gaps in time ranges
by Sprenger000
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |