Criação de data personalizadas

Olá, tenho uma dúvida quanto a criação de datas. Por exemplo, tenho alguns clientes que possuem datas de pagamentos específicas, todo dia 30 outros dia 10, esses dias correspondem ao vencimento. Ainda não consegui criar uma data com dia/mês/ano personalizada para cada cliente com a api LocalDate. Vocês conhecem algum exemplo que eu possa estudar ?

Como você tentou?
Criar uma data inicial, e após isso ir adicionando meses não funciona?

    LocalDate inputDate = LocalDate.of(2020, 10, 10);
    inputDate = inputDate.plusMonths(1L);

Algo assim

Olá. Estive tentando algumas coisas aqui. acho que encontrei uma solução. Tá feio, mas funcionando por enquanto. Vou tentar adaptar para os dados do banco.

import java.time.LocalDate;

public class MyClass {
    public static void main(String args[]) {
        
        LocalDate ld = LocalDate.now();
        int cmp = ld.lengthOfMonth();
        
        int dia = 15;
        
        LocalDate registro = LocalDate.of(ld.getYear() , ld.getMonth() , 18);
        LocalDate registroAlterado = LocalDate.of(registro.getYear() , registro.getMonth() , dia);
        
        System.out.println(registroAlterado);
        
        LocalDate pagamento = registroAlterado.plusDays(registroAlterado.lengthOfMonth());
        System.out.println(pagamento);
        
        LocalDate pagamento2 = pagamento.plusDays(pagamento.lengthOfMonth());
        System.out.println(pagamento2);
        
        LocalDate pagamento3 = pagamento2.plusDays(pagamento2.lengthOfMonth());
        System.out.println(pagamento3);
        
        LocalDate pagamento4 = pagamento3.plusDays(pagamento3.lengthOfMonth());
        System.out.println(pagamento4);
        
        LocalDate pagamento5 = pagamento4.plusDays(pagamento4.lengthOfMonth());
        System.out.println(pagamento5);

        LocalDate pagamento6 = pagamento5.plusDays(pagamento5.lengthOfMonth());
        System.out.println(pagamento6);

        LocalDate pagamento7 = pagamento6.plusDays(pagamento6.lengthOfMonth());
        System.out.println(pagamento7);

        LocalDate pagamento8 = pagamento7.plusDays(pagamento7.lengthOfMonth());
        System.out.println(pagamento8);

        LocalDate pagamento9 = pagamento8.plusDays(pagamento8.lengthOfMonth());
        System.out.println(pagamento9);

        LocalDate pagamento10 = pagamento9.plusDays(pagamento9.lengthOfMonth());
        System.out.println(pagamento10);
        
        LocalDate pagamento11 = pagamento10.plusDays(pagamento10.lengthOfMonth());
        System.out.println(pagamento11);

        LocalDate pagamento11 = pagamento10.plusDays(pagamento10.lengthOfMonth());
        System.out.println(pagamento11);
        
    }

}

Saidas:
2019-04-15
2019-05-15
2019-06-15
2019-07-15
2019-08-15
2019-09-15
2019-10-15
2019-11-15
2019-12-15
2020-01-15
2020-02-15
2020-03-15

1 curtida

Talvez assim fique menos feio:

import java.time.LocalDate;

public class MyClass {

    public static void main(String args[]) {
        MyClass programa = new MyClass();
        programa.executar();
    }

    public void executar() {
        int parcelas = 12;
        int diaVencimento = 15;
        LocalDate[] vencimentos = parcelar(parcelas, diaVencimento);
        for (LocalDate data : vencimentos) {
            System.out.println(data);
        }
    }

    private LocalDate[] parcelar(int numeroParcelas, int diaVencimento) {
        LocalDate[] parcelas = new LocalDate[numeroParcelas];
        LocalDate data = LocalDate.now();
        data = LocalDate.of(data.getYear(), data.getMonth(), diaVencimento);
        for (int i = 0; i < numeroParcelas; i++) {
            parcelas[i] = data;
            data = data.plusDays(data.lengthOfMonth());
        }
        return parcelas;
    }
}
3 curtidas

Valeu. Achei uma boa ideia.

1 curtida