método retorna vaiável nula[RESOLVIDO]

Olá estou tentando converter uma String para Calendar…pesquisei aqui como faze-lo, mas cheguei a um ponto de onde não sei como resolver:

 datas =  conecta.resultset.getString("dt_emprestimo");// timestamp
      int tamanho = datas.length();
      datas = datas.substring(0, tamanho-11);
      datas = datas.replace('-', '/');
      transforma=converteCalendar(datas);// transforma é um tipo Calendar

a variável cal retorna nula desse método:

public  Calendar converteCalendar(String ddMMaaaa) throws ParseException {
        DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
         Date dt = df.parse (ddMMaaaa);
         Calendar cal = Calendar.getInstance();
         cal.setTime (dt);
         return cal;
    }

Como ela é nula ao passa-la como referência da null pointer…
Muito Obrigado

O que está retornando dessa linha abaixo?

datas =  conecta.resultset.getString("dt_emprestimo");// timestamp 

Por que não usa getDate() no lugar de getString()?

“2009-11-10 15:56:49.0” - retorna essa data do meu banco que esta como TIMESTAMP…depois retirei as Strings, ta indo certinho pro método, o problema é na hora da conversão…

Por favor dê uma olhada novamente, limpe os teus .classe e compile novamente.

Calendar.getInstance() nunca retorna null. Se retornasse, cal.setTime daria um NullPointeException, e o método não retornaria.

Bruno, ele para antes dessa outra chamada


diferenca = d.verificaData(transforma);

método da classe Diferenca

public int verificaData(Calendar dataEmp) {
        dataDesejada.set(2009, 12, 12); // atribui a data
        int dia = calendario.get(Calendar.DAY_OF_MONTH);
        int mes = calendario.get(Calendar.MONTH);
        int ano = calendario.get(Calendar.YEAR);
        mes++;
        dataAtual.set(ano, mes, dia);
      
        Integer atraso = 0;
       

        while (dataEmp.before(dataAtual)){ 
            atraso++;
            dataAtual.add(Calendar.DAY_OF_WEEK, 1);
        }

obrigado

Dá um clean no projeto.
Não é para dar erro.

Ainda acho que é melhor usar o getDate. Você pode pegar dados do tipo TimeStamp com ele. Depois, fica fácil definir a data para um Calendar, diretamente.

ViniGodoy como usar o getDate para pegar TimeStamp?

…falha minha

[quote=Graciano]isso não vai dar um loop infinito?

while (dataEmp.before(dataAtual)){ atraso++; dataAtual.add(Calendar.DAY_OF_WEEK, 1); } [/quote]

Acho que ele quis dizer:

while (dataAtual.after(dataEmp)){ atraso++; dataAtual.add(Calendar.DAY_OF_WEEK, -1); } [/quote]

Timestamp é só um nome que o banco de dados costuma a dar para um tipo de tempo. O driver do seu DB deve ser capaz de lidar com essa diferença, e obter o objeto correto usando o getDate.

Que banco você está usando?

Tente fazer diretamente:

Date datas = conecta.resultset.getDate("dt_emprestimo"); Calendar cal = Calendar.getInstance(); cal.setTime(datas);

Mysql…
então é só criar uma variável do tipo Date:
Date teste
teste= conecta.resultset.getDate(“dt_emprestimo”);
?

Sim, deveria ser só isso sim. Não tem pq ler um tipo que representa datas do banco como string, para depois converte-lo para data novamente.

esta como date, mas mesmo assim preciso converte-la para Calendar…

Tudo depende.
Se você quer fazer operações em cima da data, é melhor usar Calendar.

Sim, e eu já mostrei como fazer isso:

Calendar cal = Calendar.getInstance(); cal.setTime(dataQueVeioDoBancoDeDadosNoFormatoDate);

Date teste=new Date();
teste= conecta.resultset.getDate("dt_emprestimo");
        
 Calendar cal=Calendar.getInstance();
  cal.setTime (teste);
  d.verificaData(teste);//Quando vou passar a referência da incompatibilidade pois teste continua Date  :cry: 

uffffffff

É pq vc tem que passar cal. A variável teste não vai se metamorfosear. rs
Date teste=new Date();

[code]teste= conecta.resultset.getDate(“dt_emprestimo”);

Calendar cal=Calendar.getInstance();
cal.setTime (teste);
d.verificaData(cal);[/code]