Subtrair data com calendar [RESOLVIDO]

Pessoal… queria fazer algo que subtraisse uma data atual com a data de validade, para gerar um aviso dos últimos 5 dias restantes de uso…

Por exemplo IF data atual - data de validade == 5 FAÇA “Faltam 5 dias para expirar”

só que não quero fazer vários IFs… alguma dica?

// Verifica se a data atual é anterior a data informada if (atual.getTime().before(validade.getTime())) { if .....{ dataNaValidade = true; } }

Coloque um if para checar se é menor ou igual a 5.

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar validade = Calendar.getInstance();
validade.add(Calendar.DAY_OF_YEAR, 5);
System.out.println("Validade: " + sdf.format(validade.getTime()));
long diasRestantes = TimeUnit.MILLISECONDS.toDays(validade.getTimeInMillis()-new Date().getTime());
  if(diasRestantes <=5)
  System.out.format("Faltam %s dias para expirar.",diasRestantes);

//Validade: 07/04/2014
//Faltam 5 dias para expirar.

Valeu ErikRAR…

era isso mesmo, só que a validade é validade.setTime(sdf.parse(“30/04/2014”)); e está retornando que faltam 32 dias para expirar e não 28

Adicionei para 30 aqui validade.add(Calendar.DAY_OF_YEAR, 30); mas no mês está como 05… (validade: 30/05/2014 e não 30/04/2014)

onde altero para verificar o mês e ano também?

======= Editado

Esquece, entendi que aquele 30 está somando a data que informei… por isso colocava um mês para frente… coloquei zero e agora está blz… valeu mesmo.

Cara, aqui deu certo:

validade.setTime(sdf.parse("30/04/2014")); System.out.format("Faltam %s dias para expirar.",diasRestantes); //Validade: 30/04/2014 //Faltam 27 dias para expirar.

Na verdade tem que somar mais um dia em dias restantes ou sistema vai interpretar que acaba dia 29/04 as 23:59, não no fim dia dia 30.

Valeu… aqui tbm deu certo sim… eu tinha falado antes de pensar…

Obrigado