[Perl] Convertir fecha a timestramp RESUELTO
Marco Antonio Manzo
amnesiac en unixmonkeys.com
Vie Dic 9 16:42:17 CST 2005
On Fri, 2005-12-09 at 15:55 +0000, Rafael Marques Parra wrote:
> Pues esto es lo que hice y me funciono excelentemente, saludos y gracias por la ayuda !!!!!.
>
> use Time::Local;
>
> my $date1 = "2005-12-05";
> my $date2 = "2005-09-20";
> my ( $year1,$month1,$day1 ) = split( /-/, $date1 );
> my ( $year2,$month2,$day2 ) = split( /-/, $date2 );
>
> my $first_date = timelocal( "00","00","00",$day1,$month1 - 1,$year1 );
> my $second_date = timelocal( "00","00","00",$day2,$month2 - 1,$year2 );
>
> my $s = $first_date - $second_date;
> my $dif = int( $s / 86400 );
> $dif -= '1';
> my @i = ( 1 .. $dif );
>
> Y asi pude obtener la diferencia entre dias de las dos fechas.
>
> Saludos !!!!_________________________________________________________________________
> ¡Encuentra trabajo ya! Tenemos miles de vacantes.
> www.trabajahoy.com
>
>
> _______________________________________________
> Perl mailing list
> Perl en tlali.iztacala.unam.mx
> http://tlali.iztacala.unam.mx/cgi-bin/mailman/listinfo/perl
Te la complicaste DEMASIADO, pudiste haber utilizado DateTime ( y por
consecuencia DateTime::Duration ) para computar la diferencia de las
fechas en pocas líneas de manera un poco mas eficiente y sencilla.
Por ejemplo, para un cálculo de la diferencia de años entre 2 fechas
puedes escribir:
#!/usr/bin/perl
use strict;
use warnings;
use DateTime::Format::Strptime;
my $parser = DateTime::Format::Strptime->new( pattern => '%d-%m-%Y' );
my $dt = $parser->parse_datetime( '06-01-1983' );
my $dt2 = DateTime->now; # Epoch actual
my $years ( $dt2 - $dt )->years; # el operador '-' es sobrecargado
print $years;
Este ejemplo usa strptime, sin embargo, hay diversas maneras ( módulos )
para analizar fechas utilizando DateTime.
Saludos,
--
Marco Antonio Manzo Bañuelos
amnesiac en unixmonkeys.com
http://www.unixmonkeys.com/amnesiac/
Más información sobre la lista de distribución Perl