Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Internacionalizando datas

Bom dia Pessoal, esse é meu primeiro post no forum, então meus cumprimentos a todos, não vou me aprensentar muito por este topico não é para isso, apenas dizer que sou analista de sistemas a 17 anos, da velha guarda ( delphi ) e estou em reciclando com linguagens mobile.

Bem estou com um projeto de aprendizado no android studio e tenho tentado internacionalizar a aplicação usando strings, até aí tudo belezinha.

Minha questão são as datas: Guardo no DB sempre ano/mes/dia, assim o sqlite sabe lidar com ela corretamente, mas quero exibir formatada conforme local.

Tenho usado Simpledateformat, porem encontro situações que não gosto muito, não me parecem a melhor forma.

Descrevendo casos: Como no banco esta yyyy/mm/dd, sempre que vou buscar uso um dateformat para fazer parse para data com a mascara em questão e outro para formatar para visulização, nesta visualização eu gostaria de pegar o formato de um recurso na string que criei para cada linguagem. Aqui temos o primeiro problema, pois as classes que fazem isso não são activity e não tem context, preciso passar o context para minhas classes mesmo, ou existe outra forma?

Outra situação, não quero ficar espalhando as conversões para todo o código, assim estava tentando coloca-las no set e get da minha classe, ou seja sempre que fizer um get, passa de yyyy/mm/dd para formato local, e sempre que fizer um set, passa de local para yyyy/mm/dd.

porém, meu get nem sempre esta pegando do banco, quando em outros momentos em que a data ja foi formatada termos um problema.

A melhor solução que encontrei foi detectar a linguagem selecionada pelo usuario e tratar meu sql com cases, ja retornando do banco formatado como eu quero, sem formatar na aplicação.

Resumundo o que gostaria é, trabalhar com essa formatação da forma mais generica e eficaz possivel, para isso recorro aos mais experientes aqui do forum.

abraço

6 respostas

Olá, tudo bem ?

Bem banaca sua atitude de reciclar :D

Cara nunca passei por isso, algo que analiso vendo as aplicações é que elas trabalham ou é manter o padrão internacional MM/dd/YYYY

Outra coisa que você pode fazer é usar o mesmo esquema que a gente faz com as palavras e você receber no seu SimpleDateFormat um valor baseado na localidade

Vlw Matheus! pois é eu tentei pegar o format vindo do recurso strings, isso gera 2 problemas. Primeiro que para usa-los diretamente na classe nao tenho contexto.

Segundo que ao usar na classe, como os gets e setters sao chamados em varios momentos unca sei se esta vindo do banco ou da tela, e isso originaria um formato diferente para converteer para data antes de aplicar nova máscara.

Usando uma strinf para isso, e fazendo a conversão pontualmente em cada ponto da app dá certo, só nao achei prático.

Esse de fato é um grande problema !

O que você pode fazer é usar um recurso chamado injeção de dependência, no android temos uma lib chamada Dagger, a gente ensina em um dos cursos mais avançados de Android.

Vlw, vou estudar sobr eo assunto, se souber qual o curso que trata disso para me passar agradeço, ja pessei pelo 1,2,3 e pelo 1 para webserver.

solução!

https://www.alura.com.br/curso-online-android-chat

tks!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software