Comparação de datas

4 respostas
C

Pessoal

Como eu consigo comparar datas, as datas são String. Quero comparar se a data de vencimento é anterior ou igual à data de pagamento, se positivo não ocorrerá multa, caso contrário, ocorrerá a multa.

:tosco:

Por favor, me ajudem!

4 Respostas

M

Opa,

converta-as para java.util.date e depois compare:

DateFormat df = DateFormat.getInstance(); Data d1 = df.parse(string1); Data d2 = df.parse(string2); if (d1.compareTo(d2) > 0) ...

C

Marcos,

Obrigada pela dica, mas está dando o erro abaixo:

found   : java.util.Date

required: javax.xml.crypto.Data

Data d1 = df.parse(data);

Data d2 = df.parse(vencimento);

data é a data do pagamento e vencimento é a data do vencimento da mensalidade do aluno. As duas variáveis, que são string, estão recebendo um txt.

Vc pode me ajudar?

M

Olá Carla,

você tem que importar:
java.util.Calendar e java.util.date.

qualquer coisa coloque o código completo.

C

Oi Marcos,

Importei o java.util.Calendar mas continuo com problemas. Vamos ao código.

Criei o método abaixo para pegar a data do sistema:

private String DataAtual() {

SimpleDateFormat formatter = new SimpleDateFormat(formato);

String data = formatter.format(hoje);

return data;

}

E no método calcular, que calcula o desconto de bolsa, caso o aluno a possua e a multa se já tiver passado o vencimento, coloquei o código que você postou:

DateFormat df = DateFormat.getInstance();

Data d1 = df.parse(data.getText());

Data d2 = df.parse(vencimento.getText());

Só que o netbeans sugeriu que eu circundasse com try e catch, então ficou assim:

try {
        d1 = df.parse(data);
    } catch (java.text.ParseException ex) {
        ex.printStackTrace();
    }
    try {
        d2 = df.parse(vencimento);
    } catch (java.text.ParseException ex) {
        ex.printStackTrace();
    }

Mais abaixo eu indiquei quem são data e vencimento:

vencimento = txtVencimento.getText();
data = txtData.getText();

E comparei para saber se tem multa ou não:

if (d1.compareTo(d2)>0){

multa = (valor * 10)/ 100;

txtMulta.setText(String.valueOf(multa));

} else{

multa = 0;

txtMulta.setText(String.valueOf(multa));

}

O programa compila, mas na hora de executar, ele indica um erro na linha

d1 = df.parse(data);

Vc pode me dizer se tem alguma coisa errada, ou se está faltando alguma coisa???

Obrigada.

Criado 24 de novembro de 2007
Ultima resposta 30 de nov. de 2007
Respostas 4
Participantes 2