Duvida com Data

10 respostas
brunosardao

Pessoal,

Eu preciso coletar alguns dados de um arquivo TXT dentro de um determinada DATA. Exemplo:

Buscar informações entre 01/03/12 a 15/03/12, mas nao sei como fazer. alguem poderia me ajudar ?

Obrigado,

10 Respostas

mauricioadl

como esta esse arquivo? posta um exemplo.

o que vc nao consegue fazer? ler o arquivo? converter a data? manipular intervalos de datas?

brunosardao

mauricio,

O Meu arquivo esta da seguinte forma:

030312 011055 020312 CTMG     SEL208I JOB BGBJ0S13 BGBG0S13/16356 OID=71A9I ENDED "OK"
030312 011055 020312 CTMG     SEL208I JOB BGBJ0S14 BGBG0S14/16357 OID=71A9J ENDED "OK"
030312 011055 020312 CTMG     SEL208I JOB BGBJ0S15 BGBG0S15/16358 OID=71A9K ENDED "OK"
030312 011055 030312 CTMG     SEL208I JOB BGBJ0S16 BGBG0S16/16359 OID=71A9L ENDED "OK"
030312 011055 030312 CTMG     SEL208I JOB BGBJ0S17 BGBG0S17/16360 OID=71A9M ENDED "OK"
030312 011055 040312 CTMG     SEL208I JOB BGBJ0S18 BGBG0S18/16361 OID=71A9N ENDED "OK"
030312 011055 040312 CTMG     SEL208I JOB BGBJ0S19 BGBG0S19/16362 OID=71A9O ENDED "OK"
030312 011055 040312 CTMG     SEL208I JOB BGBJ0S20 BGBG0S20/16363 OID=71A9P ENDED "OK"
030312 011055 040312 CTMG     SEL208I JOB BGBJ0S21 BGBG0S21/16364 OID=71A9Q ENDED "OK"
030312 011055 040312 CTMG     SEL208I JOB BGBJ0S22 BGBG0S22/16365 OID=71A9R ENDED "OK"

Então, ler o arquivo, tranquilo, e a conversão da data, tranquilo…veja se esta certo, fiz um teste convertendo a data que esta em string para Date

public void TesteDeData (String odate, String odate1){
	
	Date dt_inicio  = new Date();
	Date dt_fim     = new Date();
	
	SimpleDateFormat df  = new SimpleDateFormat("ddmmyy");
	SimpleDateFormat df1 = new SimpleDateFormat("ddmmyy");	
	
	try{
		
		dt_inicio  = df.parse(odate);
		dt_fim     = df1.parse(odate1);
		
	}catch(ParseException x){
		x.printStackTrace();
	}

So que ai parei…nao sei como fazer para que quando for buscar os dados, seja lido o intervalo de uma data a outra e me retorne os dados.

Para a leitura dos dados, faço o seguinte:

// LOOP PARA PERCORRER O ARQUIVO ATÈ O FIM DOS REGISTROS		
    	    while((leitor=reader.readLine() ) != null){
    	   
     	    	
     	  // SEPARACAO DO ARQUIVO EM COLUNAS
   	    	 String[] novoArq = leitor.split(" ");  
    
//*************************************************************************************************************************                   
//                            PROCESSO DE CAPTURA DOS ABENDS SELECIONADOS                                            *
//*************************************************************************************************************************        

         // CAPTURA APENAS AS INFORMACOES DOS ERROS
   	        if(leitor.contains("ABENDED") || leitor.contains("FAILED") ||     
   	        leitor.contains("NOT CATLGD 2") || leitor.contains("UNEXPLA")){   
   	     // FILTRA APENAS JOBS COM 8 POSICOES	
   	        if(novoArq[13].length() > 8){   
             
         // AGILIZA O PROCESSO DE CAPTURA DOS DADOS PARA INSERIR EM COLUNAS
   	        StringBuilder linhaSaida1  = new StringBuilder();           


         //SISTEMA	
   	        linhaSaida1.append(novoArq[13].substring(0,2)).append("  ");	
   	     // DATA DE PROCESSAMENTO
   	        linhaSaida1.append(novoArq[2]).append("  "); 
   	     // HORA
   	        linhaSaida1.append(novoArq[3]).append("  ");
   	     // ODATE
   	        linhaSaida1.append(novoArq[4]).append("  ");
   	     // JOB
   	        linhaSaida1.append(novoArq[13].substring(0,8)).append("  ");
   	     // JOBID
   	        linhaSaida1.append(novoArq[13].split("/")[1]).append("  "); 
   	     // UID
            linhaSaida1.append(novoArq[14].substring(4,9)).append(" ");
   	
         // OCORRENCIAS
		    if (leitor.contains("UNEXPLA")){    
   	           linhaSaida1.append(novoArq[16] + " " + novoArq[18]);   
	      } else if (leitor.contains("NOT CATLGD 2")){   
               linhaSaida1.append(novoArq[15] + " " + novoArq[16] + " " + novoArq[17] + " " + novoArq[18] + " " + novoArq[19]);    
	      } else if (leitor.contains("FAILED")){
   	           linhaSaida1.append(novoArq[15] + " " + novoArq[16] + " " + novoArq[17]);
          } else if (leitor.contains("ABENDED")){
               linhaSaida1.append(novoArq[15] + " " + novoArq[17]);
   	      }
                
          
         // ADICIONA AS INFORMACOES NO ARRAY DE ABEND
            errosArquivo.add(linhaSaida1.toString());

Então, uso este codigo acima para dividir o arquivo em colunas e assim obter os dados que preciso. por isso que preciso obter estes dados mas dentro de um intervalo de datas, pois se executá-lo assim, ele pega todas as datas até datas anteriores que não preciso.

Espero que tenha conseguido explicar.

Obrigado

mauricioadl

manipular dentro do arquivo eh muito trabalhoso, seria melhor vc trazer todo ele pra memoria e manipular com joda-time. fica mais simples.

brunosardao

Legal Mauricio, porém como faço isso ?.. pode me dar um exemplo ?

mauricioadl

nunca usei joda-time entao vou ficar devendo, mas vejo muitas pessoas sábias do forum dizendo que eh simples.

de uma pesquisada em joda-time que vc acha um monte de tutorial ensinando.

brunosardao

Beleza Mauricio, não tem problema, te agradeço pelo HELP…

vou tentar dar uma procurada sobre esse Joda-Time, realmente da forma que estou trabalhando com os dados é bem complexo mesmo…

talvez ate mude de estrutura e começe a usar um banco de dados como auxiliar…acredito que fique até mais fácil…

Abs,

RiQuInHo_

dá uma lida aqui pode te ajudar bastante

http://www.ibm.com/developerworks/java/library/j-jodatime/index.html

n to com tempo para mostrar o mais viavel…olha lá

brunosardao

Valeu Riquinho, vou ler sim…

mauricioadl

brunosardao:
Beleza Mauricio, não tem problema, te agradeço pelo HELP…

vou tentar dar uma procurada sobre esse Joda-Time, realmente da forma que estou trabalhando com os dados é bem complexo mesmo…

talvez ate mude de estrutura e começe a usar um banco de dados como auxiliar…acredito que fique até mais fácil…

Abs,

cara se vc puder usar banco auxiliar vai melhor uns 1000 por cento. usa sqlite pra gravar e depois pra pegar intervalo no banco de dados eh muito simples!

Dakon

Usa SQLITE que fica muito mais simples a gravação/leitura/manipulação dos dados, onde sua consulta seria um simples SELECT com BETWEEN.

Criado 28 de março de 2012
Ultima resposta 28 de mar. de 2012
Respostas 10
Participantes 4