restar dos horas en java

Estado
Cerrado para nuevas respuestas.

<<AxEl>>

Lanero Reconocido
11 Oct 2002
1,114
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
 
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.
 
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.
 
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.
 
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?
 
Nunca he usado Java para estas cosas pero, para restar 2 horas no bastaria con quitar 7200000 milisegundos y ya?
 
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
Cerrado para nuevas respuestas.

Los últimos temas