Oi, Igor! Como vai?
Você está enfrentando uma confusão comum sobre o uso de plusMonths e minusMonths.
- plusMonths(n) → avança a data em n meses.
- minusMonths(n) → retrocede a data em n meses.
No seu caso, se o usuário digita "adiantar pagamento", isso significa trazer a data para antes (antecipar). Ou seja, faz sentido usar minusMonths, como você já implementou.
Veja este exemplo:
import java.time.LocalDate;
public class Teste {
public static void main(String[] args) {
LocalDate data = LocalDate.of(2025, 6, 17);
// Adiantando 2 meses (pagamento antes do prazo)
LocalDate adiantada = data.minusMonths(2);
// Atrasando 2 meses (pagamento depois do prazo)
LocalDate atrasada = data.plusMonths(2);
System.out.println("Data original: " + data);
System.out.println("Adiantada: " + adiantada);
System.out.println("Atrasada: " + atrasada);
}
}
Saída:
Data original: 2025-06-17
Adiantada: 2025-04-17
Atrasada: 2025-08-17
✅ Portanto:
- Se a ideia é antecipar, use minusMonths
- Se a ideia for postergar, use plusMonths.
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado