[SP-pm] Probleminha com datas...

Luis Motta Campos luismottacampos em yahoo.co.uk
Quarta Maio 30 05:44:54 PDT 2007


   Gente, eu estou procurando idéias para resolver um problema  
complicado.

   Meus dados de entrada são uma data válida, que eu vou chamar  
$basedate, e um intervalo de tempo positivo, inteiro, não nulo, que  
eu vou chamar $interval.

   O que eu preciso fazer é obter todos os dias entre $basedate e  
$basedate+$interval. Alguém tem alguma sugestão melhor do que um loop  
para calcular um dia de cada vez?

   O loop:

#!/home/Users/lcampos/run/bin/perl
use strict;
use warnings;
use DateTime;

my $basedate = DateTime->now( time_zone=>'Europe/Amsterdam' )- 
 >truncate( to => 'day' );
my $interval = 3;

sub list_days {
     my ( $start_date, $interval ) = @_;
     my $end_date = $start_date + DateTime::Duration->new( days =>  
$interval );
     my $pointer = $start_date->clone;
     my @days;
     while( $pointer < $end_date ) {
         push @days, $pointer->clone;
         $pointer->add( days => 1 );
     }
     return \@days;
}

my @days = list_days( $basedate, $interval );
__END__

   Alguém tem uma idéia melhor?
   Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}




Mais detalhes sobre a lista de discussão SaoPaulo-pm