Instância de objeto LocalDate

Criei um atributo privado do tipo String chamado dt_abertura. Eu quero que esse atributo seja uma data e outro atributo chamado dt_vencimento seja dt_vencimento = dt_abertura + 7 dias.

O que eu tinha feito até então foi:

private String dt_abertura;
private static int sla = 7;

//...

public void setDtAbertura(LocalDate dt_abertura) {
  this.dt_abertura = dt_abertura;
}


public LocalDate getDtAbertura() {
  return this.dt_abertura;
} 

Porém, quando fui criar as instâncias desse objeto eu não consegui, pois tentei passar como String. Diante disso, tentei adaptar da seguinte forma apenas no dt_abertura:

public void setDtAbertura(String dt_abertura) {
	DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
	LocalDate ld_abertura = LocalDate.parse(dt_abertura, dateTimeFormatter); 
}

Mas agora estou perdida em como trato o objeto e futura manipulação. Qualquer sugestão é bem vinda, pois sou iniciante.

Dependendo do que vc quer, o ideal seria trabalhar com LocalDate mesmo. Seria algo assim:

class BoletoComLocalDate {
  private LocalDate dataDeAbertura;
  private LocalDate dataDeVencimento;

  public void setDataDeAbertura(LocalDate dataDeAbertura) {
    this.dataDeAbertura = dataDeAbertura;
    this.dataDeVencimento = dataDeAbertura.plusDays(7);
  }

  public LocalDate getDataDeAbertura() {
    return this.dataDeAbertura;
  }

  public LocalDate getDataDeVencimento() {
    return this.dataDeVencimento;
  }
}

Mas se vc realmente precisa ou deseja usar apenas String, daria para fazer algo assim:

class BoletoComString {
  private String dataDeAbertura;
  private String dataDeVencimento;

  private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("dd/MM/yyyy");

  public void setDataDeAbertura(String dataDeAbertura) {
    this.dataDeAbertura = dataDeAbertura;
    this.dataDeVencimento = LocalDate.parse(dataDeAbertura, FORMATTER).plusDays(7).format(FORMATTER);
  }

  public String getDataDeAbertura() {
    return this.dataDeAbertura;
  }

  public String getDataDeVencimento() {
    return this.dataDeVencimento;
  }
}

Aí, vc trabalharia com estas classes assim:

class Main {
  public static void main(String... args) {
    var boletoComString = new BoletoComString();
    boletoComString.setDataDeAbertura("15/06/2022");
    System.out.println(boletoComString.getDataDeAbertura());
    System.out.println(boletoComString.getDataDeVencimento());

    var boletoComLocalDate = new BoletoComLocalDate();
    boletoComLocalDate.setDataDeAbertura(LocalDate.now());
    System.out.println(boletoComLocalDate.getDataDeAbertura());
    System.out.println(boletoComLocalDate.getDataDeVencimento());
  }
}

Seria isso que vc precisava? Se não, explica melhor o seu problema.

1 curtida

Seria quase isso, eu começo a travar quando eu vou criar as instâncias do LocalDate. E se eu quisesse passar uma data de abertura específica? Como seria criação no boletoComLocalDate?

Após ter perguntado aqui, pensei mais um pouquinho e implementei da seguinte forma:

private LocalDate dt_abertura;

//...

public void setDtAbertura(String dt_abertura) {
		DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy");
		LocalDate ld_abertura = LocalDate.parse(dt_abertura, dateTimeFormatter);
		this.dt_abertura = ld_abertura;
	}

Vou pegar a sua proposta do dataDeVencimento e já descartar o que fiz de forma errônea.

Obrigada, wldomiciano.

1 curtida

Com LocalDate, passar uma data especifica poderia ser assim:

boletoComLocalDate.setDataDeAbertura(LocalDate.of(2022, 12, 31));
1 curtida

Entendi. Muito obrigada, wldomiciano!

1 curtida