Olá.
Estou começando um projetinho e me deparei com uma dificuldade.
Preciso saber o intervalo (em horas) entre a data atual e uma data mais adiante. Ex:
Hoje: 03/05/2012
Amanha: 04/05/2012
Intervalo: 24 horas
Estou tentando utilizar o getTimeInMillis() do Calendar…mas não estou conseguindo chegar no valor correto. Alguem tem alguma sugestão?
grato.
seg = 1000 * 1
minuto = seg * 60
hora = minuto * 60
Dia = hora * 24
Ou seja, você pode ir convertendo para segundos, depois minutos e, por último, por horas.
Pega em milesegundos as duas datas, joga cada uma em um long depois vc faz : maior - menor, ( resultado / 1000 / 60 /24).
Cara eu não testei, mas pelo q me lembro assim da certo, faz o teste ai…e posta se deu certo.
Se quiser facilidade pode usar o JodaTime também, caso seja útil pra você e isso não seja um exercício.
ele tem uma classe Hours que trata isso muito facilmente. Ex:
DateTime hoje = new DateTime();
DateTime amanha = new DateTime().plusDays(1);
int horas = Hours.hoursBetween(hoje, amanha).getHours();
package tempo;
import java.util.Calendar;
import java.util.GregorianCalendar;
public class CalculaTempo {
/**
* @param args
*/
public static void main(String[] args) {
Calendar primeiraData = new GregorianCalendar(2012, 05, 03);
Calendar segundaData = new GregorianCalendar(2012, 05, 04);
Long msPrimeiraData = primeiraData.getTimeInMillis();
Long msSegundaData = segundaData.getTimeInMillis();
Long diferenca = msSegundaData - msPrimeiraData;
//Mostra diferença em ms:
System.out.println("Diferença em ms: " + diferenca);
//Mostra diferença em s:
System.out.println("Diferença em s: " + diferenca / 1000);
//Mostra diferença em m:
System.out.println("Diferença em m: " + diferenca / 1000 / 60);
//Mostra diferença em h:
System.out.println("Diferença em h: " + diferenca / 1000 / 60 / 60);
//Mostra diferença em dias:
System.out.println("Diferença em dias: " + diferenca / 1000 / 60 / 60 / 24);
}
}
Bem tosco, mas funciona.
[quote=juniorsml]Pega em milesegundos as duas datas, joga cada uma em um long depois vc faz : maior - menor, ( resultado * 60 * 60 *24).
Cara eu não testei, mas pelo q me lembro assim da certo, faz o teste ai…e posta se deu certo.[/quote]
Acho que é resultado / 1000 / 60 / 60 pra ele conseguir as horas. Se multiplicar vai dar um número muito maior hehehe
[quote=digaoneves][quote=juniorsml]Pega em milesegundos as duas datas, joga cada uma em um long depois vc faz : maior - menor, ( resultado * 60 * 60 *24).
Cara eu não testei, mas pelo q me lembro assim da certo, faz o teste ai…e posta se deu certo.[/quote]
Acho que é resultado / 1000 / 60 / 60 pra ele conseguir as horas. Se multiplicar vai dar um número muito maior hehehe[/quote]
Ele inverteu a lógica.
Isto se usa para achar os ms de um dia…
digaoneves vc ta certo cara…me enganei legal…ja arrumei lá.