[bcn-pm] trabajando con fechas
Arnau Bria
arnauaemergetux.net
Div Abr 4 01:44:33 PDT 2008
On Thu, 03 Apr 2008 17:41:57 +0200
Jose Luis Perez Diez wrote:
Hola!
> Yo con tantas respuestas y a un no se lo que quieres, por si acaso he
:-) gracias por tu interés!
Yo quiero pasar unas horas:minutos:segundo a segundos. Sin importarme
al fecha.
Es decir, si tengo 48:00:00 (48 horas, 0 minutos y 0 segundos) me
devuelva que eso son 172800 segundos. Yo entonces multiplicaré,
dividiré, lo que fuere, esos segundos y volveré a pasarlos a
horas:minutos:segundos, es decir, 14:59:59 (en ese caso).
La solución que me dio bruno (Clock.pm) me iba de perlitas, pero el
reloj sólo es de 23:59:59, y mis horas pueden llegar a 72:00:00.
Y las funciones que me pasó Salvador me funcionan bien. Bueno, de echo
hay una cosa que no entiendo, y aprovecho para comentarlo aquí. la
última linea:
sprintf("%02d:%02d:%02d", $s / 3600, ($s / 60) % 60, $s % 3600);
debería dejarme dos numeros por campo, no? (el %02d), pues bien, en los
segundo me deja hasta 4 núemros.
Si le paso 48:00:00 me devuelve 14:59:3578.
Yo lo he cambiado a:
sprintf("%02d:%02d:%02d", $hours,$minutes,$seconds);
donde cada campo es la división:
my $hours=$s/3600;
my $minutes=($s/60)%60;
my $seconds=(($s/60)%60)%60;
y así me sale bien:
14:59:59
Porque pasa eso?
y otra sobre las funciones.
sub myfmt2seconds {
my $t = shift;
$t =~ /^(\d+):(\d+):(\d+)$/ or die "formato raro";
$t=$1 * 3600 + $2 * 60 + $3;
}
porque esta función retorna $t si no lo especificas? he estado leyendo
varios manuales y siempre pone el return...
si hubiera $t y $s, habría que especificar? retorna el último cálculo?
salu2 y gracias por todo!
--
Arnau Bria
http://blog.emergetux.net
Bombing for peace is like fucking for virginity
Més informació de la llista de correu Barcelona-pm