Criar Condição para gerar Datas

Olá, preciso criar uma condição para gerar datas de vencimento.
a condição deve ser:
pegar data matricula e adicionar o vencimento nos meses subsequentes, abaixo é o modelo, onde preciso pegar a data da matricula, comparar com a data atual e adicionar os vencimentos subsequentes, alguém pode ajudar eu.

GregorianCalendar gc = new GregorianCalendar();
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar dt1 = Calendar.getInstance();
Calendar dt2 = Calendar.getInstance();
Calendar dt3 = Calendar.getInstance();
//dt2.add(Calendar.MONTH, 30);
try {
    dt3.setTime(sdf.parse(fTxtDtMatricula.getText()));
    dt1.setTime(sdf.parse(lblData.getText()));
    dt2.setTime(sdf.parse(fTxtDtVencimento.getText()));
} catch (java.text.ParseException e ) {}
    int dias = dt3.get(Calendar.MONTH) - dt1.get(Calendar.MONTH);
    dt3.add(Calendar.MONTH, 1);
    jTextAtraso.setText(String.valueOf(dias));

Boa noite,
Não tive tempo de tentar resolver, mais axo que esse link pode te dar uma ajuda

    GregorianCalendar gc = new GregorianCalendar();
    //capturando a data
    int ano = gc.get(Calendar.YEAR);
    int dia = gc.get(Calendar.DATE);
    int mes = gc.get(Calendar.MONTH);
    
    // dias a acrescentar
    int venc = 20;
    
    // acrescentando 20 dias a data atual
    gc.add(Calendar.DATE, venc);

    //System.out.println("Dia: " + dia + "\nMes: " + mes + "\nano: " + ano);

    // resultado
    System.out.println("Dia: " + gc.get(Calendar.DATE));

Caso você esteja utilizando Java 8, a nova API temporal tá sensacional. É bem fácil de entender. Alguns exemplos:

public class Main {

    public static void main(String[] args) {
        String hojeRaw = "01/03/2017";
        DateTimeFormatter formatador = DateTimeFormatter.ofPattern("dd/MM/yyyy");
        LocalDate hoje = LocalDate.parse(hojeRaw, formatador); // Ou simplesmente LocalDate.now()
        System.out.println("Hoje: " + hoje);

        // 1. Adicionar unidades de tempo
        LocalDate amanha = hoje.plus(1, ChronoUnit.DAYS); // dias
        LocalDate daquiUmMes = hoje.plus(1, ChronoUnit.MONTHS); // mêses
        LocalDate daquiUmAno = hoje.plus(1, ChronoUnit.YEARS); // anos
        System.out.println("Amanha: " + amanha);
        System.out.println("Daqui um mês: " + daquiUmMes);
        System.out.println("Daqui um ano: " + daquiUmAno);

        // 2. Se o vencimento é com 15 dias, você pode somar 15 dias à data informada
        final int qtdDias = 15;
        LocalDate vencimento = hoje.plusDays(qtdDias);
        System.out.println("Vencimento: " + vencimento);

        // 3. Calcula diferenca entre duas datas
        System.out.println("Diferença entre hoje e daqui um mês em dias: " + DAYS.between(hoje, daquiUmMes));
    }

}

O fundamento é esse mesmo Ivbarbosa, o que estou desenvolvendo no caso é um formulário, onde os dados são cadastrados no banco de dados e depois capturados para consulta e edição, havia criado todos objetos como String, porque era apenas para o usuario inserir a data, mas agora, quero fazer que a partir da data da matricula, seja gerado a de vencimento mensalmente, nessa parte o que enviou ajudou a clarear a ideia, já estou mudando os objetos que registram a data para Date, dai uma parte que não sei é a exemplo: para setar uma string faço assim: mod.setNome(txtNome.getText());, para um combobox mod.setEstado((String) cBEstado.getSelectedItem());, mas para data não estou sabendo fazer, tem alguma ideia sobre isso.

Bom dia Jederson_Andre, o fundamento é esse mesmo, vou ler o link que enviou, valeu.

bom dia,
Também estou querendo partir pro java 8, vc tem algum material para indicar???

Tem a trilha oficial da Oracle falando sobre a nova API temporal: https://docs.oracle.com/javase/tutorial/datetime/TOC.html

É ótima, cobre tudo, porém é em inglês. Não sei se tem material bom em português. Na Casa do código tem um livro só sobre Java 8, deve falar sobre Streams, Lambda e essa parte de Date Time.

1 curtida

é o livro Java 8 do Deitel? dizem q o livro dessa cara é muito bom.
Ainda nao sei nem o java 7 direito, kkkkk

Não sei se entendi direito. Você quer pegar a data do campo e setar no objeto?

class Aluno {
    LocalDate dataMatricula;
}

// usuário colocou a data de matrícula no campo de texto
// e apertou no botão de salvar

Aluno aluno = new Aluno();
String stringComADataQueUsuarioInformou = campoDeTextoDaData.getText();
aluno.dataMatricula = LocalDate.parse(stringComADataQueUsuarioInformou, DateTimeFormatter.ofPattern("dd/MM/yyyy"));

Não é, é um livro bem simples só sobre as novidades do Java 8, pelos próprios autores da casa do código (acho que é do Paulo Silveira).

Eu nunca li os livros do Deitel, mas dizem que são muito bons. O do Deitel, em contrapartida, provavelmente aborda tudo de Java Standard Edition 8 (tudo do 7 + novidades do 8).

Vou testar aqui, valeu.