[bcn-pm] trabajando con fechas

Salvador Fandino sfandinoayahoo.com
Dij Abr 3 06:51:40 PDT 2008


> From: Arnau Bria <arnau en emergetux.net>

> tengo que parsear un fichero en el que tengo una cantidad de horas
> expresadas así: HH:MM:SS.
> Quiero coger esa fecha, y factorizarla, es decir, multiplicarla
> dividirla por un factor y volver a representarla como estaba.
> 
> 
> Llevo un rato buscando módulo en el cpan que trabajen con date, pero no
> acabo de encontrar algo que simplemente convierta ese formato a, por
> ejemplo, segundos. Pero al ser una fecha relativa (no me importa el día
> que es hoy, ni epoch ni nada) no encuentro nada que me satisfaga.
> 
> Mi solución es multiplicar las hora, los minutos y tal, es decir,
> hacerme yo la función que lo convierta, pero me extraña que no haya
> nada ya que lo haga, y además mi poca experiencia buscando cositas
> amplia mi duda...

Hoy en dia, el modulo mas o menos estandar para manipular fechas y tiempos es DateTime, pero usarlo para algo tan simple es como matar moscas a cañonazos.

Todo lo que necesitas son un par de funciones para convertir ese formato a segundos y al viceversa. Luego, con el tiempo en segundos puedes simplemente manipularlo como un entero, multiplicarlo, dividirlo, etc.

# sin probar...
sub myfmt2seconds {
  my $t = shift;
  $t =~ /^(\d+):(\d+):(\d+)$/ or die "...";
  $1 * 3600 + $2 * 60 + $3;
}

sub seconds2myfmt {
  my $s = shift;
  sprintf("%02d:%02d:%02d", $s / 3600, ($s / 60) % 60, $s % 3600);
}



Saludos,

 - Salva



      ____________________________________________________________________________________
You rock. That's why Blockbuster's offering you one month of Blockbuster Total Access, No Cost.  
http://tc.deals.yahoo.com/tc/blockbuster/text5.com


Més informació de la llista de correu Barcelona-pm