restar dos horas

cesar
22 de Febrero del 2004
hola a todos el problema que tengo, es que necesito restar dos fechas que se encuentran en una bd y no se como ¿alguien me puede ayudar?

cristobal
22 de Febrero del 2004
/** Devuelve true si la instancia acutal de fecha es
* <años> menor que la actual */
public boolean menor2años (int años){
Fecha fechaActual = new Fecha();
long diferencia;
long miliseg=3600000*24*365*años; //Tiempo transcurrido en milisegundos

diferencia = this.getTime()-fechaActual.getTime();
if (diferencia > miliseg)
return true;
else
return false;
}

Jander
22 de Febrero del 2004
Hola,
a falta de una clave o funcion que haga eso como dios manda, puedes hacerlo a pelo, pidiendole al objeto Date o Calendar o el que sea el tiempo em milisegundos con getTime(): long
Ahora tienes ambas fechas en long, representando los milisegundos transcurridos desde el 1/1/1970. Con lo que para restar dos fechas basta con restar los long y la diferencia son los milisegundos de diferencia, que en horas seria dividir por 3600000.

eldrum
22 de Febrero del 2004
Calendar c = Calendar.getInstance(); //obtienes un calendario, adecuado a donde estas (en occidente es el gregoriano
c.setTime(....); //estableces la fecha (que lees de la bd)
c.add(Calendar.HOUR, -2); //añades -2 (restas dos) a las horas, comprueba que Calendar.HOUR sea correcto, igual tiene otro nombre parecido, no estoy seguro

eldrum
22 de Febrero del 2004
Soy tonto, me falto añadir:
c.getTime(); //recupera el long de la fecha

rosalia
22 de Febrero del 2004
podrías usar la librería GregorianCalendar

GregorianCalendar fecha= new GregorianCalendar();
luego lees de la bd la fecha y la asignas a una variable

por ejemplo para asignar a dia el dia de hoy se usa: dia=fecha.get(Calendar.DAY_OF_MONTH);

y luego lo manipulas restandolas, ya que dia es de tipo entero.

espero te sirva, desafortunadamente no tengo un ejemplo mas claro, pero espero el tip e sirva.