Gostaria de saber como comparar a data de vencimento com data de pagamento ki eh a data atual!

17 respostas
arthur_roots

Olá irmãoS!
Ainda não sei usar a classe de data !
gostaria de aprender com esse exemplo simples…

tenhu uma data de pagamento…

e gostaria de comparalá com data de venciemnto…
sendo a data de pagamento…a atual do sistema!!!
por favor…me ajudem

desde jah agradeço!!!

17 Respostas

ViniGodoy

Você pode começar lendo a documentação da classe Calendar.

mario.fts

trabalhando com datas em java:

dipeloco
//assim 

date1.getTimeInMillis() < new GregorianCalendar().getTimeInMillis();

//ou 

date1.getTime() < new Date().getTime()

//ou colocar herdar uma delas e colocar a compração na sua classe 


// ou a melhor opção estudar JODA a api de data para java muito boa
Z

Fala arthur_roots,

Segue um exemplo:

//...
   private Calendar datapagamento;


  Calendar hoje = Calendar.getInstance();

  if(hoje.before(datapagamento)){
         return "data de hoje anterior que a data de pagamento";
  }else{
         return "data de hoje maior que a data de pagamento, ou seja, o pagamento está atrasado";
 }
//...

O Date encapsula a data em milissegundos à partir de 1970, ele virá um long… sua manipulação é muito trabalhosa, precisa dividir esses milissegundos.
Use o Calendar pois já traz algumas facilidades como pegar mês, dia , ano, adicionar ou subtrair.

Estou fazendo o curso fj-16 da Caelum que trata um do uso das datas, eles estão um usando um biblioteca chamada JodaTime que está bem superior…vale a pena conferir!

abraço

arthur_roots

tem como vc enviar pra mim essa apostila não estou consiguindo fazer o download!!

[email removido]

se puder fazer esse favor…!!!

arthur_roots
Calendar hoje = Calendar.getInstance();
    datadePagamento=???????
    if (hoje.before(datadePagamento)) {
        System.out.println("data de hoje anterior que a data de pagamento");
    } else {
        System.out.println("data de hoje maior que a data de pagamento, ou seja, o pagamento está atrasado");
    }

essa é minha duvida agora como colokar um valor !!!

Z

arthur_roots:
tem como vc enviar pra mim essa apostila não estou consiguindo fazer o download!!

[email removido]

se puder fazer esse favor…!!!

Arthur, nessa apostila não trata do JodaTime, na verdade não aprenderemos nesse curso, usaremos somente o Calendar…

Ainda não usei o JodaTime, mas a professora disse que é muito simples =)

creio que no guj deve haver tópicos sobre ele…

Abraço

arthur_roots

Hum intendi…

Calendar hoje = Calendar.getInstance();
        datadevencimento=
        if (hoje.before(datadePagamento)) {
            System.out.println("data de hoje anterior que a data de pagamento");
        } else {
            System.out.println("data de hoje maior que a data de pagamento, ou seja, o pagamento está atrasado");
        }

como que eu vou colokar o valor da data de vencimento???

String?
Date?
Calendar…???
essa eh minha duvida agora…
tipo qnd eu construo uma classe jah com o valor de vencimento!!!

se puder me ajudar !
desde jah agradecido!

Z
<blockquote><div class="quote-author">arthur_roots:</div>        Calendar hoje = Calendar.getInstance();

datadePagamento=???

if (hoje.before(datadePagamento)) {

System.out.println(“data de hoje anterior que a data de pagamento”);

} else {

System.out.println(“data de hoje maior que a data de pagamento, ou seja, o pagamento está atrasado”);

}

essa é minha duvida agora como colokar um valor !!!

Para colocar um valor você terá que trazer do banco, por exemplo.

para testar você pode fazer assim:

//... Calendar outradata = Calendar.getInstance();// pega hoje datadePagamento = outradata.add(Calendar.DAY, -2); //estou subtraindo dois dias //...

Para recuperar do banco essa data você vai precisar executar sua consulta(select) colocar os valores em um javabean.
Qualquer dúvida sobre como trazer do banco dá um toque =)

abraço

Z

arthur_roots:
Hum intendi…

Calendar hoje = Calendar.getInstance();
        datadevencimento=
        if (hoje.before(datadePagamento)) {
            System.out.println("data de hoje anterior que a data de pagamento");
        } else {
            System.out.println("data de hoje maior que a data de pagamento, ou seja, o pagamento está atrasado");
        }

como que eu vou colokar o valor da data de vencimento???

String?
Date?
Calendar…???
essa eh minha duvida agora…
tipo qnd eu construo uma classe jah com o valor de vencimento!!!

se puder me ajudar !
desde jah agradecido!

Opa, a datadePagamento tem que ser Calendar =)

Calendar datadePagamento;

abraço

arthur_roots

então soh ki eh mais simples intende…tipo assim

o cliente vai entrar com a data …]
intendeu…eu num sei como ki eu vou fazer isso
pra depois compara-lás…
pois se a data de pagamento passar da data de vencimento eu vou ter ki colokar um juros em cima!!!

ViniGodoy

É mais fácil usar o Joda-Time do que usar a própria API do Java.
http://joda-time.sourceforge.net/

arthur_roots

…pra o usar o SET do calendar???

datadeVencimento.set(2010,10,03);

como será ki deve ser!

Z

arthur_roots:
…pra o usar o SET do calendar???

datadeVencimento.set(2010,10,03);

como será ki deve ser!

arthur,

é isso mesmo!

Só um detalhe muito importante, no Calendar mês começa com 0…é meio dificil de acreditar mas é assim…

Ou seja, no exemplo acima que vc colocou o 10 na verdade está setando para mês de Novembro(11)…

o recomendado é usar Calendar.OCTOBER e assim para todos os meses, ou se preferir, apenas coloque o datadeVencimento.set(2010,10 - 1,03)

Quanto a trazer a data da tela para o código tudo bem?

abraço

arthur_roots

Vlw brother…
consegui mano…consegui mais agora …to fazendo outros exercicios espero que se eu encontrar um proximo obstaculo
vcs …Me ajudem…

DeSDE jah agradeço pela atenção e pela disposição o código final fikou assim !!!

package livro;

import java.util.Calendar;
import java.util.Date;

public class CreditCard {
//Variaveis de instância:

    private String number;
    private String name;
    private String bank;
    private double balance;
    protected double juros = 0.02;
    protected double jurosAtraso = 0.1;
    private int limit;
    public Calendar datadeVencimento = Calendar.getInstance();
    public Calendar datadePagamento = Calendar.getInstance();

//Construtor:
    CreditCard(String no, String nm, String bk, double bal, int lim, int ano, int mes, int dia) {
        number = no;
        name = nm;
        bank = bk;
        balance = bal;
        limit = lim;
        datadeVencimento.set(ano, mes, dia);
    }

//Métodos de acesso:
    public String getNumber() {
        return number;
    }

    public String getName() {
        return name;
    }

    public String getBank() {
        return bank;
    }

    public double getBalance() {
        return balance;
    }

    public int getLimit() {
        return limit;
    }

    public Calendar getdataVenc() {
        return datadeVencimento;
    }

    //Métodos de modificação
    public void setNumber(String n) {
        this.number = n;
    }

    public void setName(String nome) {
        this.name = nome;
    }

    public void setBank(String bank) {
        this.bank = bank;
    }

    public void setBalance(Double bal) {
        this.balance = bal;
    }

    public void setLimit(int lim) {
        this.limit = lim;
    }

    public void setdataVenc(int ano, int mes, int dia) {
        this.datadeVencimento.set(ano, mes, dia);
    }

    //Métodos de ação:
    public boolean chargelt(double price) { //Debita
        if (price > 0 && price + balance < (double) limit) {
            System.out.println("O cliente " + this.getName() + " debitou o valor de R$:" + price);
            balance += price;
            System.out.println();
            return true;//Debitado!
        } else {
            System.out.println("Operação não realizada!!!!");
            System.out.println();
            return false;//Neste não foi efetuada!

        }
    }

    public void makePayment(double payment) {
        if ((datadePagamento.before(datadeVencimento))) {
            if (payment > 0) {
                balance -= payment * jurosAtraso;
            }
        } else {
            if (payment > 0) {
                balance -= payment * juros;
            }
        }
    }

    public static void printCard(CreditCard c) {//Impri informações sobre o cartão
        int dia = c.datadeVencimento.get(Calendar.DATE);
        int mes = c.datadeVencimento.get(Calendar.MONTH);
        int ano = c.datadeVencimento.get(Calendar.YEAR);
        System.out.println("Number = " + c.getNumber());
        System.out.println("Name = " + c.getName());
        System.out.println("Bank = " + c.getBank());
        System.out.println("Balance = " + c.getBalance());
        System.out.println("Limit = " + c.getLimit());
        System.out.println("Data de vencimento: " + dia + "/" + mes + "/" + ano);
        System.out.println();

    }
}
package livro;

import java.util.Calendar;

public class Test {

    public static void main(String[] args) {

        CreditCard wallet[] = new CreditCard[10];
        wallet[0] = new CreditCard("5391 0375 9387 5309", "John Bowman", "California Savings", 0.0, 2500, 2010, 02, 21);
        wallet[1] = new CreditCard("5391 0375 9387 5309", "John Bowman", "California Federal", 0.0, 3500, 2010, 03, 11);
        wallet[2] = new CreditCard("5391 0375 9387 5309", "John Bowman", "California Finance", 0.0, 5000, 2010, 03, 11);

        for (int i = 1; i <= 16; i++) {
            wallet[0].chargelt((double) i);
            wallet[1].chargelt(2.0 * i); //Conversão implícita
            wallet[2].chargelt((double) 3 * i);//conversão explicita
        }
        System.out.println("Card payments: ");

        for (int i = 0; i < 3; i++) {
            CreditCard.printCard(wallet[i]);
            while (wallet[i].getBalance() > 100.0) {
                wallet[i].makePayment(100.0);
                System.out.println("New balance =" + wallet[i].getBalance());

            }
            System.out.println();
        }
    }
Z

Fala arthur, com que vc conseguiu! Tamos aí!
O GUJ já me ajudou muito nessa vida de programador =)

Cara só reforçando aquele detalhe de fazer mês -1. Segue um código para ilustrar melhor isso, se vc quiser testar:

public class teste {
	
	public static void main(String[] args) {
		
		Calendar data = Calendar.getInstance();
		
		//mês do calendar da data de hoje
		System.out.println(data.get(Calendar.MONTH));
		
		//setei o mês para três
		data.set(Calendar.MONTH, 3);
		
		//confirma que o mês mudou
		System.out.println(data.get(Calendar.MONTH));
				
		//compara o valor inteiro que representa o mês de março com o mês setado, que é 3 
		if(Calendar.MARCH == data.get(Calendar.MONTH)){
			System.out.println("jóia, os int's batem");			
		}else{
			//ele entra no else porque o int de março é 2 e mês setado é 3, ou seja, caos na terra...
                                                System.out.println("erro, o int que representa março é diferente de 3");
		}
		
		//imprime mês de março como int = 2
		System.out.println("março para o calendar "+Calendar.MARCH);
		
	}

}

Abraço

arthur_roots

Agradecido ai…!
obrigado pela atenção…
tenhu um novo exercicio
jah postei …se puder me ajudar!

Agradeço!

Criado 22 de fevereiro de 2010
Ultima resposta 23 de fev. de 2010
Respostas 17
Participantes 5