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