Manipular datas

Pessoal, estou com algumas dúvidas quanto a manipulação de datas no java. Já li em alguns fóruns a respeito da classe Calendar, Date, porém não consegui resolver meu problema.
A questão é: quando eu digitar a data de inicio, por exemplo, 13/06, e digitar a data do fim, 20/06, o programa me retorne eventos cadastrados nesse período de tempo. Como posso fazer isso?

Faça uma consulta utilizando o between.

Fica complicado ajudar mais do que isso sem saber detalhes do que vc está fazendo e como está fazendo.

Ou você pode usar o joda time, se quiser fazer no java.
Até pode usar calendar ou date, só que no java 8 vc já tem o date-time, e se não usa java 8 ainda tem o joda.


E deve ter procurado bem meia boca, já postei aqui diversas vezes sobre ele.
Enfim olha ai

Isso resolver todos os seus pobremas

http://www.mkyong.com/java/java-date-and-calendar-examples/

Bom, consegui entender melhor a manipulação de datas, mas acho que não fui bem específico no começo.
Vamos lá!
Eu tenho uma classe chamada Eventos. Nela estão alguns atributos e métodos gets e sets, em relação aos atributos há dois deles do tipo Date: data_inicio e data_fim. Após isso eu tenho uma outra classe que vai cuidar do controle, este por sua vez possibilitará que se cadastre eventos como festas, apresentações, etc numa determinada data, por exemplo, 14/06/2016. O problema é que eu quero que o “usuário” digite o intervalo de data, por exemplo, 13/06/2016 a 18/06/2016 e o programa apresente a ele todos os eventos cadastrados no sistema.
Obrigado a todos que já me ajudaram!

Criar uma lista do Tipo “Eventos” e adicionar objetos nela. Posteriormente fazer consultas nela através dos atributos de datas.
Bom essa pode ser uma solução bem simples :slight_smile:
Faz um codigo ae e posta como ficou.

Sou novo em java mas a minha lógica seria conferir todos registros do banco de dados, ou seja, o campo Data do evento está entre as datas do intervalo informado? Se sim, ir guardando as chaves de cada registro para serem exibidas posteriormente. Para isso você vai ter que aprender a manipular os dados do tipo “Date”, que alguns já informaram e também banco de dados com o java.

  List<Eventos> evenList = new ArrayList<Eventos>();
        Date dIni, dFim;
        
        evenList.addAll(evenMap.values());
        
        
        System.out.println("Por favor, use este formato de data: dd/mm/aaaa ");
        DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
        System.out.println("\t Informe a data do inicio de sua estadia: ");
        dIni = sdf.parse(scan.next());
        //System.out.println("\tFaça o mesmo para data do final de sua estadia: ");
        //dFim = sdf.parse(scan.next());
        
        for (Eventos evenD : evenList) {
            if (evenD.getDataEvento().equals(dIni))
                System.out.println(evenD.getDataEvento());
        }

Bom, eu consegui fazer desta forma, quando o usuário digita uma determinada data e esta encontra-se no “banco”, o programa exibe os dados para ele. O problema é que ainda não consegui sanar o meu problema, no qual é inserir duas datas e o programa exibir o intervalo de datas entre essas duas.

Solução definitiva ESTUDE:

http://www.mkyong.com/java/java-date-and-calendar-examples

java.util.Date VencDate = jDateChooserClienteInicial.getDate();
java.sql.Date sqlVencDate = new java.sql.Date(VencDate.getTime());

java.util.Date PagDate = jDateChooserClienteFinal.getDate();
java.sql.Date sqlPagDate = new java.sql.Date(PagDate.getTime());

String sql="select eventos from datas where dataentrega between ('"+sqlVencDate+"') AND ('"+sqlPagDate+"');";

try {
	con.resultset.next();
  
		eventos=((con.resultset.getString("eventos")));

	 } catch (Exception e) {
	   Logger.getLogger(RelatorioPedidos.class.getName()).log(Level.SEVERE, null, e);
	 }

Bom pessoal, andei lendo o pacote Date do java e utilizei o método getTime(), não sei se é a melhor maneira de resolver isso, mas é bem simples e esta funcionando bem.

public void pesquisaEven () throws IOException, ParseException {

    this.recupera();
    
    List<Eventos> evenList = new ArrayList<Eventos>();
    Date dIni, dFim;
    evenList.addAll(evenMap.values());
    Collections.sort(evenList);
    
    System.out.println("Por favor, use este formato de data: dd/mm/aaaa ");
    DateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    System.out.println("\t Informe a data do inicio de sua estadia: ");
    dIni = sdf.parse(scan.next());
    System.out.println("\tFaça o mesmo para data do final de sua estadia: ");
    dFim = sdf.parse(scan.next());
    
    for (Eventos evenD : evenList) {
        if (evenD.getDataEvento().getTime() >= dIni.getTime() && evenD.getDataEvento().getTime() <= dFim.getTime())
            System.out.println(evenD.getDataEvento());
    }
}

Agradeço aqueles que ajudaram, faz cerca de 1 ano e meio que venho estudando programação, sendo esta o primeiro contato com java, por isso acabo tendo muitas dúvidas. Até mais!

Bom legal. Mas não entendi onde entra então o que você pediu do BD ?

Ah, acho que me posicionei mal. Quando eu falei “banco” eu queria dizer que os dados inseridos pelo usuário no programa seriam armazenados em arquivos .dat em forma de Mapas, nesse caso TreeMap, então seria uma espécie de banco.