Horas

7 respostas
Guitar_Men

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…

7 Respostas

H

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

xandevieira

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(); }

Guitar_Men

Eu tinha ido por ai, mas minha pergunta é como crio um calendar com a hora sendo meia noite ??!!

xandevieira

Assim:

Calendar dataIni = new GregorianCalendar();
dataIni.set(Calendar.HOUR_OF_DAY, 0);  
dataIni.set(Calendar.MINUTE, 0); 	
dataIni.set(Calendar.SECOND, 0);
marcosbrandao
Calendar cal = Calendar.getInstance();
cal.set(cal.get(Calendar.YEAR), 
                cal.get(Calendar.MONTH), 
                cal.get(Calendar.DAY_OF_MONTH ), 
                23, 
                59, 
                59);
H

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));
Guitar_Men

Valew consegui o que queria, obrigado a todos pelas dicas… :smiley:

Criado 4 de abril de 2008
Ultima resposta 4 de abr. de 2008
Respostas 7
Participantes 4