Olá Pessoal boa tarde, estou implementando um método que traz a diferença em dias de duas datas, o problema é que quando entre essas datas existe o horário de verão um dia é descontado.
Tentei implementar mas sem sucesso, segue abaixo o código que utilizo:
private static List<Date> getDatasIntervalo(Date dataInicial,
Date dataFinal, List<Date> lista)
throws Exception {
if (dataInicial != null && dataFinal != null) {
Calendar dtIni = toCalendar(dataInicial);
Calendar dtFim = toCalendar(dataFinal);
if (dataFinal.after(dataInicial)) {
while (dtIni.compareTo(dtFim) <= 0) {
lista.add(dtIni.getTime());
dtIni.add(Calendar.DATE, 1);
}
} else {
throw new Exception(
"Os períodos devem ser informados em ordem crescente. Favor rever os períodos.");
}
}
return lista;
}
private static Calendar toCalendar(Date data) {
Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
cal.setTime(round(data));
return cal;
}
private static Date round(Date data) {
try {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
return df.parse(df.format(data));
} catch (ParseException e) {
throw new RuntimeException(e);
}
}
As datas que utilizei para fazer a diferença foram:
03/09/2013 - 07/09/2013 => 5 dias certo
14/10/2013 - 23/10/2013 => 9 dias errado (o certo seriam 10 dias)
Desde já agradeço.