Galera, preciso fazer uma função que me retorne em milissegundos quanto tempo falta para meia noite, como fazer o calculo ?? Usando meia noite como sendo 00:00. Não estou muito familiarizado com calendarios ainda, mas vejo que o caminho é por ai…
Bom dia!
Porque você não cria um objeto Calendar atribuindo dia de hoje somando mais 1, depois atribuindo hora, minuto e segundos com os valores 0.
Depois você cria um Date com a hora atual…
Depois é só subtrair o getTime de cada um e você terá a diferença
O caminho eh ± este.
/**
* Retorna uma data com a soma das horas passados como parametro.
*
* @param date
* @param hour
* @return
*/
public static Date sumHours(Date date, int hour) {
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
c1.add(Calendar.HOUR, hour);
return c1.getTime();
}
Eu tinha ido por ai, mas minha pergunta é como crio um calendar com a hora sendo meia noite ??!!
Assim:
Calendar dataIni = new GregorianCalendar();
dataIni.set(Calendar.HOUR_OF_DAY, 0);
dataIni.set(Calendar.MINUTE, 0);
dataIni.set(Calendar.SECOND, 0);
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH),
cal.get(Calendar.DAY_OF_MONTH ),
23,
59,
59);
Tenta dessa forma…
// instancia o calendar que será usado pra alterarmos para meia noite
Calendar calMeiaNoite = GregorianCalendar.getInstance();
// recupera a data de hoje
int day = calMeiaNoite.get(Calendar.DATE);
// atribui no calendar a data de hoje +1
calMeiaNoite.set(Calendar.DATE, day+1);
// altera o horario para 00:00:00
calMeiaNoite.set(Calendar.HOUR, 0);
calMeiaNoite.set(Calendar.MINUTE, 0);
calMeiaNoite.set(Calendar.SECOND, 0);
calMeiaNoite.set(Calendar.MILLISECOND, 0);
// recupera a data atual
Date dataAtual = new Date();
// calcula o resultado
long resultado = calMeiaNoite.getTime().getTime()-dataAtual.getTime();
// resultado em milisegundos
System.out.println(resultado);
// resultado em minutos
System.out.println(resultado/(60*1000));
Valew consegui o que queria, obrigado a todos pelas dicas…