Preciso Pegar a diferença de dias entre uma data e outra para aplicar multa por atraso em um sistema de locadora. Como fazer isso?
Pegar a diferença de dias entre uma data e outra
4 Respostas
O jeito que eu acho mais facil e direto de fazer isso seria:
public long getDiferencaEmDias(Date d1, Date d2){
long vDia = 1000 /* milisegundos */ * 60 /* segundos */ * 60 /* minutos */ * 24 /* horas */;
return (d1.getTime() / vDia) - (d1.getTime() / vDia);
}
Acho que é isso… Escrevi direto aqui.
Eu montei há um tempo essa função que era pra validar um prazo máximo…
Por exemplo, um prazo máximo de 30 dias entre um período inicial e final.
Adapta ao que vc precisa… a sua regra certinha, blz?
/**
* Nome: validarPeriodoLimitado
*
* Verifica se periodo é maior que 0 e menor que quantidadeDias.
*/
public static boolean validarPeriodoLimitado(Date periodoInicial, Date periodoFinal, Integer quantidadeDias) {
Calendar dataInicio = Calendar.getInstance();
Calendar dataFim = Calendar.getInstance();
dataInicio.setTime(periodoInicial);
dataFim.setTime(periodoFinal);
Long dataIniMili = dataInicio.getTimeInMillis();
Long dataFimMili = dataFim.getTimeInMillis();
Long diferencaDias = dataFimMili - dataIniMili;
diferencaDias = diferencaDias / (HORAS * SEGUNDOS * MINUTOS * MILISSEGUNDOS);
if ((diferencaDias >= Numeros.ZERO) && (diferencaDias <= quantidadeDias)) {
return true;
} else {
return false;
}
}
Eu li muito que não é o correto fazer com contas, porém não conseguimos um outro tipo de validação.
Se alguém tiver isso feito de uma maneira melhor, por favor, postar aí…
Ahhh, e as constantes dali eram
private static int HORAS = 24;
private static int SEGUNDOS = 60;
private static int MINUTOS = 60;
private static int MILISSEGUNDOS = 1000;
Criado 27 de janeiro de 2011
Ultima resposta 27 de jan. de 2011
Respostas 4
Participantes 4