Tecnologia do Blogger.
RSS

Re: [androidbrasil-dev] Problemas com Datas

Sobre o erro do log não entendi do porque estar ocorrendo

Sobre a exibição em tela o seu código parece estar correto.

Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
Minha lista de presentes: clique aqui
Linux user: #525086
------------------



2012/7/27 Evandro Choma <evandrochoma@gmail.com>
Maicon

Modifiquei deixando assim:

                SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String dataFundacao = "";
                Date dataFund;
                try {
                    dataFund = dateFormat.parse(cliente.dataFundacao.toString());

                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    dataFundacao = "erro: " + e.toString();
                    dataFund = null;
                }
               
                //Log.i("AFV", "Data Fundação: "+ cliente.dataFundacao + "|" + dataFund.toString());
                Log.i("AFV", "Data Fundação: "+ dataFundacao);


Contudo a linha do Log precisa ser comentada caso contrário ela dá Force close. e dai no Log cat imprimiu esta seguinte mensagem:
07-27 11:28:47.303: I/AFV(2643): Data Fundação: erro: java.text.ParseException: Unparseable date: "Mon Oct 06 00:00:00 GMT-03:00 1980"

Mas dai fiquei com uma dúvida, se o parse é para pegar e jogar na data se estou pegando a data de um objeto cliente e esta no cliente já é do tipo de data, eu precisaria fazer este parse?

Outro detalhe eu com  a data parseada corretamente, para formatar ela do jeito que vou imprimir em tela seria assim?
SimpleDateFormat monitor = new SimpleDateFormat("dd/mm/yyyy");
String dataFormatada =  monitor.format(dataFund));



Obrigado
Evandro Choma
Em 27 de julho de 2012 11:02, Maicon Strey <mstrey@gmail.com> escreveu:

Olá Evandro,
Se eu entendi o teu log está dizendo exatamente qual o erro.
Na primeira linha tu estas criando formatando a data como  "dd/MM/yyyy" 
No teu log a mensagem diz que é impossível fazer parse do conteúdo "Mon Oct 06 00:00:00 GMT-03:00 1980"

Lembre-se que aqui você está lendo uma data e portanto precisa ler no formato de origem e não o formato que será apresentado. Na origem o formato é "yyyy-MM-dd HH:mm:ss". Uma vez que o parse foi feito para uma variável de data, esta variável não possui um formato fixo, ela é apenas uma data.

Para exibir tu define um novo formato e faz um parse desta variável para uma string utilizando o formato de apresentação.

Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
Minha lista de presentes: clique aqui
Linux user: #525086
------------------



2012/7/27 Evandro Choma <evandrochoma@gmail.com>
Bom Dia Maicon

Eu tenho um Repositório onde persiste os dados e tb ele me devolve objetos, sempre que solicito e está funcionando, então resolvi primeiro ver o detalhe de apresentar em tela depois resolvo o salvar.
Dai seguindo as suas dicas fiz deste jeito, já que recebo um objeto cliente com os dados e a data é do tipo Date.

                SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
                String dataFundacao;
                try {
                    dataFundacao = dateFormat.parse(cliente.dataFundacao.toString()).toString();
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    dataFundacao = "erro: " + e.toString();
                }
               
                Log.i("AFV", "Data Fundação: "+ cliente.dataFundacao + "|" + dataFundacao );
               
                campoDataFundacao.setText(dataFundacao.toString());


Dai o valor gravado no logcat ficou assim:
07-27 10:44:58.383: I/AFV(25735): Data Fundação: Mon Oct 06 00:00:00 GMT-03:00 1980|erro: java.text.ParseException: Unparseable date: "Mon Oct 06 00:00:00 GMT-03:00 1980"

Em 27 de julho de 2012 09:27, Maicon Strey <mstrey@gmail.com> escreveu:
Evandro,
Para inserir no banco estou fazendo assim:

ContentValues ctv = new ContentValues();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String data = dateFormat.format(new Date());
ctv.put("data", data);
db.insert(TABELA,
null,
ctv) > 0;
db.close();

E para recuperar:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Objeto obj = new Objeto();
String query =   " SELECT * FROM tabela";
Cursor cur = db.rawQuery(query, null);
cur.moveToFirst();
if (cur.getCount() > 0){
Date data = new Date();
data = dateFormat.parse(cur.getString(cur.getColumnIndex("data")));
obj.setData(data);
} else{
obj.setData(new Date());
}
cur.close();

Assim consigo gravar e recuperar as datas corretamente.
Claro que nos exemplos assim a lógica está bem simplificada. adapte ela pra sua realidade.

Atenciosamente.

Maicon Strey
Novo Hamburgo - RS - Brasil
------------------
Minha lista de presentes: clique aqui
Linux user: #525086
------------------



2012/7/27 Evandro Choma <evandrochoma@gmail.com>
coloquei o new Date() no momento de criar o objeto cliente, mas dai baixei o banco e abri ele o campo data está nulo.
Vou colocar uns Log.i para ver como vai transmitindo estas datas.

em relação ao outro problema, seria para apresentar na tela a data que está no banco de dados, está mostrando sempre o campo vazio. e o banco tem dados, mas ao tentar tratar estes dados para ficar bonito tipo 27/07/2012 o campo fica com valor null.



Em 26 de julho de 2012 18:45, Alex Baule <alexwbaule@gmail.com> escreveu:

Pq vc nao usa o NOW() do banco mesmo ? na hr de inserir passa 'NOW()' que ele insere a data.


Em 26 de julho de 2012 18:21, Daniel Novi Capelassi <daniel9c@gmail.com> escreveu:

Sobre a data, é complicado falar o porque não salva no banco de dados somente com a linha que vc postou.
Mas tente fazer o seguinte:
cliente.dataCadastro = new Date();

Se não der certo, acho legal vc debugar e ver no momento em que salva este campo no banco, se o campo realmente contem o valor que foi passado.

Sobre a outra pergunta não consegui entender direito o problema.

2012/7/27 Evandro Choma <evandrochoma@gmail.com>
cliente.dataCadastro = new Date(System.currentTimeMillis());



--
------------------------------------------------------------------------------------------------------------------------
// "Eu adoraria mudar o mundo, pena que eles não me fornecem o código-fonte". \\
       ~
    \°v°
     ( . )\   --> open-source
     ^ ^
------------------------------------------------------------------------------------------------------------------------





  • Digg
  • Del.icio.us
  • StumbleUpon
  • Reddit
  • RSS

0 comentários:

Postar um comentário