FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
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); } }
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#2
|
|||
|
|||
No tyo seguro por falta de tiempo (ganas)
prueba esto HH:mm:ss
|
#3
|
||||
|
||||
Hola
No es Java es Delphi, pero te dara alguna idea. Saludos Última edición por Caral fecha: 03-04-2008 a las 21:34:50. |
#4
|
||||
|
||||
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
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#5
|
|||
|
|||
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 y ademas, no uses DATE, utiliza calendar. Y por último, porque creas dos dates y le das getHOUR y vas restando y listo |
#6
|
|||
|
|||
me falto
intnta hh:mm quizas fuinciones ve lo que te pasé
|
#7
|
||||
|
||||
Lo intentare y os digo....
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#8
|
|||
|
|||
intentalo
|
#9
|
||||
|
||||
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
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#10
|
|||
|
|||
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 |
#11
|
||||
|
||||
Cita:
Saludos...
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#12
|
||||
|
||||
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....
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
#13
|
||||
|
||||
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...
__________________
El único hombre que no se equivoca es el que nunca hace nada. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Cronómetro invisible | panuweb | Varios | 10 | 11-07-2007 00:36:22 |
Mejorar un cronometro | kokogua | Varios | 3 | 10-12-2006 15:12:57 |
Cronometro | grone35 | Varios | 4 | 27-08-2006 20:34:51 |
Cronometro | FGarcia | Varios | 1 | 19-01-2006 07:44:46 |
Cronometro C++ | The_Borg | C++ Builder | 1 | 01-06-2004 00:01:05 |
|