Adicionar dias a partir de uma data qualquer escolhida no jDateChooser

Deparei com o seguinte problema:

O cliente seleciona a data de sua escolha no jDateChooser, e com isso devera mostrar em um outro campo, sendo ele também um jDateChooser, um prazo limite, mas consigo somar o número de dias a partir da da atual do sistema, mas não do componente que ele escolhe a data inicial,

Exemplo:

Data Inicial: 27/04/2017
Data Final: 02/05/2017

A data final será acrescentada automaticamente 5 dias.

1 curtida

Olá,

Usa a nova API de data do Java8:

 LocalDate data = LocalDate
         .parse("01/04/2017", DateTimeFormatter.ofPattern("dd/MM/yyyy"));
 data = data.plusDays(5);
1 curtida

Caso você tenha um Date ao invés de uma String, existem outras formas de se chegar ao LocalDate:

 Date data = new Date();
 Instant instant = Instant.ofEpochMilli(data.getTime());
 LocalDate ldata = LocalDateTime.ofInstant(instant, ZONEID_BR).toLocalDate();
1 curtida

Você pode criar um método para fazer isso, segue um exemplo abaixo!

  public Date somaDias(Date data, int dias) {
        Calendar cal = new GregorianCalendar();
        cal.setTime(data);
        cal.add(Calendar.DAY_OF_MONTH, dias);
        return cal.getTime();
  }
1 curtida

Para complementar o que os outros colocaram acima use o método addDateListener(DateListener listener) do jDateChooser para executar uma ação quando a data for modificada.

1 curtida
Calendar c = Calendar.getInstance();
jDateChooser1.getDate();
LocalDate data = LocalDate
         .parse("27/04/2017", DateTimeFormatter.ofPattern("dd/MM/yyyy"));
data = data.plusDays(5);
jFormattedTextField1.setText(data.toString());

Então… não consegui ir muito longe, LocalDate.parse("27/04/2017, nesta parte deveria pegar as informações do jDataChooser1, mas quando passo como parâmetro, diz que o tipo não pode ser convertido.

1 curtida

Não cara, você misturou tudo.

Ou vc usa

.parse("27/04/2017", DateTimeFormatter.ofPattern("dd/MM/yyyy")); 

quando tiver uma String de data, ou você usa

Instant instant = Instant.ofEpochMilli(data.getTime());
LocalDate ldata = LocalDateTime.ofInstant(instant, ZONEID_BR).toLocalDate();

quando tiver um Date. Entenda que jDateChooser1.getDate(); retorna um Date. Neste caso, vai pela ideia do Jonathan_Medeiros que vai ser melhor pra você.

1 curtida