Comparação de Data com ArrayList

Olá, pessoal!

Tenho uma data setada no programa, em String, e um array de objetos que possuem como um dos atributos uma data.

Então, eu preciso acessar esse atributo data usando um for dentro da classe ListaDeLeiloes:

for(int i=0; i < lista.size(); ++i)  
{
   Leilao l = lista.get(i);
   String d = l.getData(); ....
  
 //comparar com a data setada no programa e retornar os leiloes que estão em andamento
} 

Já me falaram que talvez precise converter as datas em date, mas não tenho a menor idéia de como fazer isso… E os exemplos que li, parecem complexos demais pra mim…

Se alguém puder ajudar a converter para date e comparar ou tiver algum outro método que funcione, agradeço muito!

para converter em Date é assim

Date data = getComponent(variavel com sua data).getDateValue();

[quote=Dani_RS]Olá, pessoal!

Tenho uma data setada no programa, em String, e um array de objetos que possuem como um dos atributos uma data.

Então, eu preciso acessar esse atributo data usando um for dentro da classe ListaDeLeiloes:

for(int i=0; i < lista.size(); ++i)  
{
   Leilao l = lista.get(i);
   String d = l.getData(); ....
  
 //comparar com a data setada no programa e retornar os leiloes que estão em andamento
} 

Já me falaram que talvez precise converter as datas em date, mas não tenho a menor idéia de como fazer isso… E os exemplos que li, parecem complexos demais pra mim…

Se alguém puder ajudar a converter para date e comparar ou tiver algum outro método que funcione, agradeço muito![/quote]

for(int i=0 i<lista.size();i++){

String d=lista.get(i).getData() // apanhas no array a data nesta posição e voilá!!!
}

usa equals apos a conversao ai vc vai saber se as datas sao iguais…

Hmm…

Mas que método eu posso usar pra comparar que me retorne se a data é anterior ou posterior a que passei como parâmetro?

Me disseram que pode ser after/before…

Alguém sabe como utilizar?

Obrigada a todos!

ai caramba parece k nao entendi bem a pergunta…isso de ser angolano esta a pesar.

Keres ver a data que esta no array e ver se esta data que ta no array é inferior ou posterior as data k dás como parametro? é isso

Isso, Alkamovo!

Alkamavo!!!

Ops, desculpa! :oops:

mas isso é no olhar…

se no teu array tens um atributo do tipo data

for(int i=0; i < lista.size(); ++i)

{

                if( lista.get(i).getData().compareTo(dataquerecebes)&gt;0)
                       aki defines se a data for maior faz o k keres..e se for menor tb faz o k keres; .... 

este é o metodo compareTo
Returns:
the value 0 if the argument is a string lexicographically equal to this string; a value less than 0 if the argument is a string lexicographically greater than this string; and a value greater than 0 if the argument is a string lexicographically less than this string.

tou fazendo um bocado a pressa tenho de ir ao treino de JUdo…

//comparar com a data setada no programa e retornar os leiloes que estão em andamento

}

[quote=Dani_RS]Olá, pessoal!

Tenho uma data setada no programa, em String, e um array de objetos que possuem como um dos atributos uma data.

Então, eu preciso acessar esse atributo data usando um for dentro da classe ListaDeLeiloes:

for(int i=0; i < lista.size(); ++i)  
{
   Leilao l = lista.get(i);
   String d = l.getData(); ....
  
 //comparar com a data setada no programa e retornar os leiloes que estão em andamento
} 

Já me falaram que talvez precise converter as datas em date, mas não tenho a menor idéia de como fazer isso… E os exemplos que li, parecem complexos demais pra mim…

Se alguém puder ajudar a converter para date e comparar ou tiver algum outro método que funcione, agradeço muito![/quote]

  1. Leilão.getData() deve retornar um Date ( e se possivel ter um nome mais explicito como getDateDeInicio(), já que Data é um tipo de variável e não o conteudo da variável)

  2. Date é Comparable. Vc pode fazer a.compareTo(b) e usar o resultado como filtro.

  3. Ai fica mais fácil


// copia todos para a lista de abertos
List<Leilao> abertos = new LinkedList<Leilao> (lista);

Date limite= ... // a data setada no programa

for(Iterator<Leilao> it = abertos.iterator();it.hasNext();)  
{

   Date d = it.next().getData(); 
  
 //comparar com a data setada no programa e retornar os leiloes que estão em andamento
// está em andamento se a data do leilão é menor que a do limite.

     if (d.compareTo(limite)>=0){
            // não está em andamento: remove da lista de abertos
            it.remove();
     } 
}

return abertos;

Você pode converter a data com o SimpleDateFormat e comparar com os métodos da classe Date, como no exemplo:

/*
 * Classe que transforma String para Date e vice-versa.
 * No exemplo, estou falando para a classe que o formato da data com a qual estou trabalhando
 * é dd/MM/yyyy, onde:
 * - dd = O dia, com dois dígitos. Ex: 27
 * - MM = O mês, com dois dígitos. Ex: 11 (OBS: O "MM" deve ser maiúsculo,
 * pois "mm" significa "minutos")
 * - yyyy = O ano, com quatro dígitos. Ex: 2007
 */
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

String strData = "23/10/2007";
			
Date data = sdf.parse(strData); // conversão da data
			
// Verifica se a data é igual à data atual
boolean igual = data.equals(new Date());
			
// Verifica se a data é mais antiga que data atual
boolean maisAntiga = data.before(new Date());
			
// Verifica se a data é mais recente que data atual
boolean maisRecente = data.after(new Date());