Como comparar uma data com a data do sistema c

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!!!

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

[code]//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[/code]

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

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

se puder fazer esse favor…!!!

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 !!!

[quote=arthur_roots]tem como vc enviar pra mim essa apostila não estou consiguindo fazer o download!!

se puder fazer esse favor…!!![/quote]

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

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!

[quote=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 !!![/quote]

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

[quote=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![/quote]

Opa, a datadePagamento tem que ser Calendar =)

Calendar datadePagamento;

abraço

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!!!

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

…pra o usar o SET do calendar???

datadeVencimento.set(2010,10,03);

como será ki deve ser!

[quote=arthur_roots]…pra o usar o SET do calendar???

datadeVencimento.set(2010,10,03);

como será ki deve ser![/quote]

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

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(); } }

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:

[code]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); }

}[/code]

Abraço

Agradecido ai…! obrigado pela atenção… tenhu um novo exercicio

jah postei …se puder me ajudar!

Agradeço!