Como faço para diminuir duas horas?

galera Como faço para diminuir duas horas? seja em Date ou GregorianCalendar???

Com Calendar pode ser usado o método add, como é uma subtração, passe um número negativo:

calendar.add(Calendar.HOUR_OF_DAY, -2); //subtrai 2 horas
1 curtida

mas são duas classes Calendar, existe algum método direto para isso?

Eu tinha entendido que era para subtrair duas horas de um Date ou Calendar. Mas você quer subtrair um data de outra, certo? Nunca fiz isso, mas a ideia seria algo do tipo:

long d = calFinal.getTimeInMillis() - calInicial.getTimeInMillis(); // d guarda a diferença entre os calendars em milissegundos. Em seguida teria de tratar este valor fazendo divisões para converter em segundos, minutos ou horas. long dHoras = d / (60 * 60 * 1000); //Diferença em horas long dMinutos = d / (60 * 1000); //Diferença em minutos long dSegundos = d / 1000; //Diferença em segundos
Mas para o caso de trabalhar com cálculo de horas e datas, o pessoal recomenda bastante a API Joda-Time