For com diferencas de datas

10 respostas
rapha.java

Bom dia, tenho uma duvida de como fazer um for e modificar uma data no calendar. Seguinte, em uma pagina abre-se um modal e neste modal tenho duas caixas de textos onde são digitadas uma dataInicial e uma final e ao clicar no botao pesquisar o metodo vai fazer a diferenca de dias e mostra no datatable as informações entre estas datas etipuladas, o calculo dos dias eu quase consegui fazer :

public void pesquisaProduto() {
		// data inicial
		Calendar dataInicial = Calendar.getInstance();
		dataInicial.set(2010, Calendar.SEPTEMBER, 12);//como  colocar o "getdtInicial aqui se ele da erro" (getDtInicial) é a String q a caixa de texto vai setar??

		// outra data
		Calendar dataFinal = Calendar.getInstance();
		dataFinal.set(2010, Calendar.OCTOBER, 22);// e aqui a final ?

		// calcula a diferenca de datas

		long diferenca = dataFinal.getTimeInMillis()
				- dataInicial.getTimeInMillis();

		// milissegundos em um dia
		int tempoDia = 1000 * 60 * 60 * 24;

		long diferencas = diferenca / tempoDia;
		System.out.println(diferencas);

	}

E depois como faco esse for na lista, NÃO ESTOU USANDO BANCO DE DADOS, APENAS ARRAYLIST DE OBJETOS INSERIDOS MANUALMENTE!

10 Respostas

g4j

Reformule sua dúvida, não pude entender.

Fazer um for onde?

rapha.java

g4j:
Reformule sua dúvida, não pude entender.

Fazer um for onde?


Assim, quando o usuario digitar a data inicial e final tenho q pegar a diferenca e fazer um for e carregar na lista apenas as informações entre este periodo de tempo !

g4j

Já começou a fazer? Poste teu código aqui por favor.

rapha.java

Até agora fiz como esta o exemplo, mas preciso mudar a data, pois no exemplo foi inserido manualmente, como faço isso ?

g4j

Até agora fiz como esta o exemplo, mas preciso mudar a data, pois no exemplo foi inserido manualmente, como faço isso ?

Estou tentando entender ainda qual é o problema a ser resolvido.

Você disse que vai abrir uma modal e vai ter 2 datas. Ok.

Clica no botão pesquisar e o método vai calcular a diferença em dias das datas. Essa quantidade de dias é útil? Onde você vai usar essa quantidade de dias?

Mostra no datatable as informações entre as datas estipuladas. Que tipo de informações se relacionam com essas datas para você fazer a seleção?

att,

rapha.java

Até agora fiz como esta o exemplo, mas preciso mudar a data, pois no exemplo foi inserido manualmente, como faço isso ?

Estou tentando entender ainda qual é o problema a ser resolvido.

Você disse que vai abrir uma modal e vai ter 2 datas. Ok.

Clica no botão pesquisar e o método vai calcular a diferença em dias das datas. Essa quantidade de dias é útil? Onde você vai usar essa quantidade de dias?

Mostra no datatable as informações entre as datas estipuladas. Que tipo de informações se relacionam com essas datas para você fazer a seleção?

att,
Desculpe, percebi q a quantidade de dias não mem é util. Eu quero q ao clicar no botao liste no datatable as informações do produto durante o periodo estipulado (diferenca de datas), mpor exemplo a validade, preco… entendeu ?

g4j

rapha.java:

Desculpe, percebi q a quantidade de dias não mem é util. Eu quero q ao clicar no botao liste no datatable as informações do produto durante o periodo estipulado (diferenca de datas), mpor exemplo a validade, preco… entendeu ?

Entendi.

Você disse que já tem a lista dos produtos, então deve criar um método de listagem, passando as datas por parâmetro.

public List<Produto> listaEntreDatas(Date dtInicial, Date dtFinal)

cada classe produto deve possuir uma data, na qual você deve fazer a comparação pra ver se o produto está entre as datas que você estipulou. Para isso, você deve comparar a data do produto com as datas. A classe Date da api java possui métodos úteis que fazem isso pra você. São o after e o before:

http://download.oracle.com/javase/6/docs/api/java/util/Date.html#after%28java.util.Date%29

http://download.oracle.com/javase/6/docs/api/java/util/Date.html#before%28java.util.Date%29

rapha.java

g4j:
rapha.java:

Desculpe, percebi q a quantidade de dias não mem é util. Eu quero q ao clicar no botao liste no datatable as informações do produto durante o periodo estipulado (diferenca de datas), mpor exemplo a validade, preco… entendeu ?

Entendi.

Você disse que já tem a lista dos produtos, então deve criar um método de listagem, passando as datas por parâmetro.

public List<Produto> listaEntreDatas(Date dtInicial, Date dtFinal)

cada classe produto deve possuir uma data, na qual você deve fazer a comparação pra ver se o produto está entre as datas que você estipulou. Para isso, você deve comparar a data do produto com as datas. A classe Date da api java possui métodos úteis que fazem isso pra você. São o after e o before:

http://download.oracle.com/javase/6/docs/api/java/util/Date.html#after%28java.util.Date%29

http://download.oracle.com/javase/6/docs/api/java/util/Date.html#before%28java.util.Date%29


Não entendi muito bem como aplicar isto ! Vc pode dar um exemplo ?

g4j
public List<Produto> listaEntreDatas(Date dtI, Date dtF) {
		
		List<Produto> listaFiltrada = new ArrayList<Produto>();
		
		for (Produto p : produtos) {
			if (p.getDataCadastro().after(dtI) && p.getDataCadastro().before(dtF)) {
				listaFiltrada.add(p);
			}
		}
		
		return listaFiltrada;
	}
rapha.java
g4j:
public List<Produto> listaEntreDatas(Date dtI, Date dtF) {
		
		List<Produto> listaFiltrada = new ArrayList<Produto>();
		
		for (Produto p : produtos) {
			if (p.getDataCadastro().after(dtI) && p.getDataCadastro().before(dtF)) {
				listaFiltrada.add(p);
			}
		}
		
		return listaFiltrada;
	}
Ola g4j, muito obrigado pela ajuda estou quase conseguindo, mas ainda tenho uma duvida sobre este metodo, pois como vou passar as datas digitadas na minha pagina web para o construtor ???
Criado 12 de setembro de 2011
Ultima resposta 12 de set. de 2011
Respostas 10
Participantes 2