Pacato
Abril 1, 2014, 4:02pm
#1
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.
Pacato
Abril 2, 2014, 8:57am
#3
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.
Pacato
Abril 2, 2014, 9:49am
#5
Valeu… aqui tbm deu certo sim… eu tinha falado antes de pensar…
Obrigado