Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   JAVA (https://www.clubdelphi.com/foros/forumdisplay.php?f=16)
-   -   Cronometro (https://www.clubdelphi.com/foros/showthread.php?t=54798)

oracle 31-03-2008 16:16:09

Cronometro
 
Buenos días inestimables amigos:

He estado ocupado retocando los ultimos detalles de una aplicación en Java y he necesitado incluirle un sencillo cronómetro, he conseguido que este que cuyo código expongo más abajo funcione a las mil maravillas, sin embargo, yo necesito que el cronómetro alcance a visualizar las horas transcurridas y ahí es donde esta el problema pues al tratar de cambiar el parametro (mm:ss) por (hh:mm:ss) no me funciona correctamente, iniciando el cronómetro con valores erróneos tales como 07:00:00 en vez de 00:00:00, si alguién sabe algo al respecto como siempre se le agradece una sugerencia...

Saludos reiterados,

Oracle


Código:

public class Cronometro extends Thread
{
    JLabel LabelTiempoTranscurrido;
public JLabel getLabelTiempoTranscurrido() {
        return LabelTiempoTranscurrido;
    }

    public void setLabelTiempoTranscurrido(JLabel labelTiempoTranscurrido) {
        LabelTiempoTranscurrido = labelTiempoTranscurrido;
    }
   

public void run()
{
long tiempoInicio = System.currentTimeMillis();

for(;;)
{
try{sleep(1000);}catch(Exception e){}
long tiempoActual = System.currentTimeMillis();

ponerTiempo(tiempoActual - tiempoInicio);
}
}

private void ponerTiempo(long aTiempo)
{
java.text.SimpleDateFormat tmpSDF = new java.text.SimpleDateFormat("mm:ss");

String tmpText = "Tiempo transcurrido: " + tmpSDF.format(new java.util.Date(aTiempo));
getLabelTiempoTranscurrido().setText(tmpText);
}
}


Fate 01-04-2008 02:18:54

No tyo seguro por falta de tiempo (ganas)
 
prueba esto HH:mm:ss

Caral 01-04-2008 02:56:57

Hola
No es Java es Delphi, pero te dara alguna idea.
Saludos

oracle 02-04-2008 02:38:45

Hola Fate, ya he probado con eso antes de escribiros, y nada, me sale lo mismo que con hh:mm:ss pero en hora Militar, o sea con hh:mm:ss me comienza en 07:00:00 y si pongo HH:mm:ss comienza con 19:00:00...debe ser otra cosa....

Gracias Caral le echare un vistazo a tu cronometro....

Salu2

oracle

Fate 03-04-2008 00:53:39

Let's see
 
HH:mm:ss es el que viene en la documentacion oficial:

Código:

Date and Time Pattern          Result                "yyyy.MM.dd G 'at' HH:mm:ss z"          2001.07.04 AD at 12:08:56 PDT                "EEE, MMM d, ''yy"          Wed, Jul 4, '01                "h:mm a"          12:08 PM                "hh 'o''clock' a, zzzz"          12 o'clock PM, Pacific Daylight Time                "K:mm a, z"          0:08 PM, PDT                "yyyyy.MMMMM.dd GGG hh:mm aaa"          02001.July.04 AD 12:08 PM                "EEE, d MMM yyyy HH:mm:ss Z"          Wed, 4 Jul 2001 12:08:56 -0700                "yyMMddHHmmssZ"          010704120856-0700
Ahi viene un chorro pa que le utilices, debe servir alguno de estos.

y ademas, no uses DATE, utiliza calendar.

Y por último, porque creas dos dates y le das getHOUR y vas restando y listo

Fate 03-04-2008 00:54:09

me falto
 
intnta hh:mm quizas fuinciones ve lo que te pasé

oracle 03-04-2008 02:51:32

Lo intentare y os digo....

Fate 03-04-2008 19:33:58

intentalo
 
Cita:

Empezado por oracle (Mensaje 277170)
Lo intentare y os digo....



como diriamos en mexico ORACLE

oracle 04-04-2008 21:50:24

Hola Fate, con hh:mm comienza en 07:00...con HH:mm comienza en 19:00....
con hh:ss y HH:ss hace exactamente lo mismo....no se que más probar...

Saludos

oracle

Fate 16-04-2008 20:09:17

A ver creo que he entendido mal
 
El problema es que quieres iniciar un date en 00:00:00 ?

Si es así pues le das un SetHour y los otros dos setteres(minutos y segundos y listo)

Lo otro que entiendo es que quieres darle formato de 24 y no de doce horas, si es asi pues yo uso esto:

Código:

Date d = new Date();
    DateFormat df = new SimpleDateFormat("HH:mm:ss:SSS");
    System.out.println("Starting task " + id + " at " + df.format(d));


y obtengo esto:

Starting task Task 3 at 13:10:10:328


Espero quede hyperaclarado o yo haya entendido bien

oracle 16-04-2008 22:59:58

Cita:

Si es así pues le das un SetHour y los otros dos setteres(minutos y segundos y listo)
Gracias Fate por responder, sin embargo a pesar de tu aclaración sigue sin funcionarme. De todas formas en la parte que me pierdo es en el setHour y los otros dos setteres que no se de donde salen....


Saludos...

oracle 16-04-2008 23:10:24

Bueno este es el código, a ver si así puedes ayudarme....


Código:


public class Cronometro extends Thread
{
    JLabel LabelTiempoTranscurrido;   
    boolean Finish = false;

    public void run()
    {
        long tiempoInicio = System.currentTimeMillis();
       
       
        for(;;)
            {
                if(Finish) break;
               
                try{sleep(1000);}catch(Exception e){}
                long tiempoActual = System.currentTimeMillis();
               
                ponerTiempo(tiempoActual - tiempoInicio);
            }
    }
       
    private void ponerTiempo(long aTiempo)
        {
            java.text.SimpleDateFormat tmpSDF = new java.text.SimpleDateFormat("HH:mm:ss");
               
            String tmpText = "Tiempo transcurrido: " + tmpSDF.format(new java.util.Date(aTiempo));
            getLabelTiempoTranscurrido().setText(tmpText);
    }


Agradecido nuevamente....

oracle 22-04-2008 14:39:08

Bueno amigos, he dado con la solucion googleando un poco, y el asunto esta en que todos los milisegundos comienzan en 1900...por tanto la resta tiempoInicio - tiempoActual estaba dando un offset....por eso comenzaba en 19:00:00 por tanto la solucion que encontre fue la siguiente:

ponerTiempo(tiempoActual - tiempoInicio - 68400000);, donde el numero 68400000 es la cantidad de milisegundos de 19 horas (19*60*60*1000)...

Saludos y hasta la proxima...


La franja horaria es GMT +2. Ahora son las 13:07:19.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi