restar dos horas en java

Estado
No está abierto para más respuestas.

<<AxEl>>

Lanero Reconocido
Se unió
11 Oct 2002
Mensajes
1,116
Saludos laneros,

esta vez recurrio a ustedes por que se me ha presentado el siguiente problema, debo restar dos horas en java, ya intente pasandolas como objeto tipo Date() pero no encontre alguna funcion que permitiera restarlas directamente, trate de sobrecargar el operador resta, pero me decia que no se podia aplicar la operacion a dos objetos de tipo date.
Manualmente eso es un gallo, porque me toca tomar varios casos, como lo de de la zona horaria y lo de GMT, entonces la funcion que hice no estaba siendo general para lo que yo la estaba usando, por esta razon estoy buscando una forma de restar las horas con una operacion de java, ya que mi experiencia en java es muy poquita, les agradezco su ayuda
 

ZeN<CyBeRKiLLeR>

LANero oficial
Se unió
15 Abr 2001
Mensajes
2,491
Creo y digo "creo" que esa operacion no existe, a mi me toco hacer esa resta ayudandole a un amigo de aca de la comunidad.

Lo que hice fue importar la clase date que creo que esta en util

Y esa clase tiene metodos como gettime, o no recuerdo exactamente cuales son, en todo caso son metodos que te dan, minutos,segundos y horas, si vos creas una instancia, esos datos son los que tenia el sistema a la hora de crear la instancia, o le podes dar al constructor la hora en milisegundos (CurrentTimeMillis) y listo.
 

Adun

Lanero Reconocido
Se unió
11 Oct 2002
Mensajes
91
Realmente la clase Date no tiene ningún método para restar fechas.

Lo único que puedes hacer es lo que supongo ya has intentado: convertir la fecha en milisegundos con getTime, y restar esos milisegundos.

Se hace así:

Date now = new Date();
Date future = new Date(103,1,2,12,30);

long difference = future.getTime() - new.getTime();

el asunto es que difference queda con un valor en milisegundos, y te tocaría ver que hacer con ese entero long (dividirlo en 1000, en 60, en 60, en 24...)

Hay métodos after, before, equals que te permiten comparar dos fechas... si esos no hacen lo que necesitas, no hay más.
 

ZeN<CyBeRKiLLeR>

LANero oficial
Se unió
15 Abr 2001
Mensajes
2,491
ha no. vos me diste una idea

coges los tiempos en milisegundos y los restas, y ese valor se lo das a constructor de date, y el te da los tiempos sin necesidar de dividir etc.
 

Adun

Lanero Reconocido
Se unió
11 Oct 2002
Mensajes
91
hmmm, pero esa resta es un offset, porque todos los milisegundos son contados a partir de 1900...

si tenés (marzo 8 de 2003) - (marzo 7 de 2002) la resta te va a dar 1 día

... si eso se convirtiera en fecha, te daría algo así como (enero 1 de 1900)

¿no es más fácil quedarse con los milisegundos?
 

MigPosada

Lanero Reconocido
Se unió
16 Mar 2002
Mensajes
1,161
Nunca he usado Java para estas cosas pero, para restar 2 horas no bastaria con quitar 7200000 milisegundos y ya?
 

Lord

Lanero Reconocido
Se unió
3 Ene 2003
Mensajes
11
pasalos a militar, obtenes los segundos y restas alo cristiano el resultado lo mividis entre 60 en lo que necesites para que te de
 
Estado
No está abierto para más respuestas.
Arriba