Problemas com Calendar

9 respostas
Jrmanzini

Ola pessoal, alguem pode me ajudar?

tenho uma classe com esse método quero que ele retorne a diferença entre duas datas, uma delas eu pego do meu BD a outra é a data atual…
método na classe:

public int verificaData(Calendar dataEmp) {
        
        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 diferenca = 0;
                while (dataEmp.before(dataAtual)){ 
            diferenca++; 
            dataAtual.add(Calendar.DAY_OF_WEEK, 1);
        }
       
        return diferenca;
    }

Esse método tem que retornar um inteiro…

chamada:

try {
                        datas =  conecta.resultset.getString("dt_emprestimo");
                        SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
                        Calendar cal = Calendar.getInstance();
                        cal.setTime(sdf.parse(datas));
                        } catch (ParseException ex) {
                        Logger.getLogger(tela.class.getName()).log(Level.SEVERE, null, ex);
                    }

            }
        } catch (SQLException ex) {
            Logger.getLogger(tela.class.getName()).log(Level.SEVERE, null, ex);
        }
        d.verificaData(datas);\erro de tipos aqui......datas não foi convertido para Calendar??(datas era String)

Agradeço muito quem puder ajudar.
Obrigado

9 Respostas

mario.fts

http://www.guj.com.br/posts/list/9440.java

http://www.guj.com.br/posts/list/130401.java

Jrmanzini

hhhh desculpe-me mas ja pesquisei, só postei porque mesmo assim não consegui resolver…

obrigado

Jrmanzini

o problema é que a data que eu pego do meu BD é Timestamp…vem assim=> 2009-06-13 16:50:21, com a hora junto…

mario.fts

zera a Hora antes de comparar então

Calendar c = Calendar.getInstance();
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE,  0);
        c.set(Calendar.SECOND,  0);
Jrmanzini

amigo, fiz uma “gambiarra” e retirei da String as horas…

int tamanho = datas.length();
  datas = datas.substring(0, tamanho-11);
   cal=converterParaCalendar(datas);
   diferenca = d.verificaData(cal);

mas ta dando um erro de "java.text.ParseException: Unparseable date: “2009-11-11"” quando eu mando a data para o método que a converte:

public static Calendar converterParaCalendar (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;
    }

?

renamed

Você tem que trocar os caracteres ‘-’ por ‘/’

try{ String data = "2009-11-11"; data = data.replace('-', '/'); DateFormat df = new SimpleDateFormat ("yyyy/MM/dd"); Date dt = df.parse (data); Calendar cal = Calendar.getInstance(); cal.setTime (dt); System.out.println("Acabou!"); }catch(Exception e){ System.out.println(e.getMessage()); }

ok?

Jrmanzini

vou tentar…obrigado

Jrmanzini

renamed, agora ta dando Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException aqui…

diferenca = d.verificaData(cal);//retorna um inteiro

diferença

public int verificaData(Calendar dataEmp) {
        
        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;
        // expira.set(2009, 5, 22);
        // expirando = (String.valueOf(expira));

        while (dataEmp.before(dataAtual)){ // verifica se a data atual é menor que a data desejada
            atraso++; // incrementar qtde de dias
            dataAtual.add(Calendar.DAY_OF_WEEK, 1);
        }
        /*if (expirando.equals(hoje)){
        System.out.println("Acabou o show");
         */

        return atraso;
    }

obrigado

pmlm

renamed:
Você tem que trocar os caracteres ‘-’ por ‘/’

try{ String data = "2009-11-11"; data = data.replace('-', '/'); DateFormat df = new SimpleDateFormat ("yyyy/MM/dd"); Date dt = df.parse (data); Calendar cal = Calendar.getInstance(); cal.setTime (dt); System.out.println("Acabou!"); }catch(Exception e){ System.out.println(e.getMessage()); }

ok?

Desculpa?!?

try{
    String data = "2009-11-11";
    DateFormat df = new SimpleDateFormat ("yyyy-MM-dd");  
    Date dt = df.parse (data);  
(...)
Criado 12 de novembro de 2009
Ultima resposta 12 de nov. de 2009
Respostas 9
Participantes 4