• Publicidad

Obtener milisegundos

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Obtener milisegundos

Notapor princi » 2012-02-16 07:39 @361

Hola, nuevamente pidiendo ayuda. En este caso tengo que hacer algo como esto
hhmm.jpg
hhmm.jpg (12.15 KiB) Visto 1500 veces

pero no sé cómo obtener los milisegundos.
El código es el siguiente:
#!C:\Perl\bin\perl.exe

use diagnostics;
use strict;
use warnings;
use File::Find;

my $dir = "C:\\Files";

find(\&fecha, $dir);

sub fecha
{
our $fila;
our $origen;
our @elem;

my $elemento = $_;
if($elemento=~ /\.dat$/)
{
our $yr;
our $mo;
our $mday;
our $hr;
our $mi;
our $se;
our $mil;
print " el elemento es: $elemento \n";
my $fi = $elemento;
open FI, "$fi";
$fila = <FI>;
@elem = split(/\s+/,$fila);
print " hora $elem[3] \n";
$origen = $elem[3];
my @utc = gmtime($origen);
print "utc : @utc \n";
$yr = sprintf "%4d",$utc[5]+1900;
$mo = sprintf "%02d",$utc[4] + 1;
$mday = sprintf "%02d",$utc[3];
$hr = sprintf "%02d",$utc[2];
$mi = sprintf "%02d",$utc[1];
$se = sprintf "%4.1f",$utc[0];
print "$hr$mi $se \n";
}
close FI;
}

pero me muestra:
HRMM SECON
1150 27.0

Desde ya agradezco su ayuda, ya que es muy importante que pueda obtener los milisegundos.
¡Muchas gracias!
¡Saludos!
princi
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2012-01-31 08:00 @375

Publicidad

Re: Obtener milisegundos

Notapor explorer » 2012-02-16 07:58 @373

El valor de tiempo lo estás obteniendo con gmtime() desde la cuarta columna, de la primera fila, de cada fichero que File::Find encuentra.

Tanto gmtime() como localtime() devuelven los componentes de tiempo, pero con precisión de segundos.

No sabemos qué aspecto tienen esos ficheros, así que no podemos saber si contienen información suficiente como para deducir el número de milisegundos.

¿No será que tienes que poner un decimal más en el sprintf de $se?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Obtener milisegundos

Notapor princi » 2012-02-16 08:42 @404

Los ficheros tienen este aspecto:
fichero.png
fichero.png (14.75 KiB) Visto 1497 veces

donde la cuarta componente es lo que quiero convertir a HRMM SECOND, pero en second siempre me muestra ss.0.
Quizás me esté equivocando en la forma de trabajar.
¡Muchas Gracias!
¡Saludos!
princi
Perlero nuevo
Perlero nuevo
 
Mensajes: 16
Registrado: 2012-01-31 08:00 @375

Re: Obtener milisegundos

Notapor explorer » 2012-02-16 09:00 @416

El problema, entonces, está en el uso de gmtime(): al pasarle la cifra, la redondea a segundos.

Lo que tienes que hacer es, o bien usar otro módulo que sepa tratar tiempos con parte fraccionaria, o tratar por una parte, la parte entera, con gmtime, y luego la parte fraccionaria. Esta última la puedes usar, de forma directa, como los milisegundos que quieres mostrar.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14477
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 9 invitados