Olá Pessoal, tudo bom?
O post de hoje irá faz um devaneio sobre conversão de datas. O padrão para utilização de datas no Java é a classe java.util.Date, mas quando você recebe uma String da interface visual com o usuário, como fica a conversão disso? Esse post de hoje irá descrever o problema da conversão, semana que vem iremos trazer a solução. Confira o post a seguir…
Código inicial
O código que será apresentado a seguir foi construído com um conhecimento básico sobre Strings e a classe java.util.GregorianCalendar. Assim pode ter sido construído por um desenvolvedor iniciante ou mesmo já experiente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package br.com.mauda.exemplos.dates.versao7.exemplo001.v1; import java.util.Date; import java.util.GregorianCalendar; public class ConvertDate { public static Date parseDate(String date, String formato) { int primeiraBarra = date.indexOf("/"); int segundaBarra = date.lastIndexOf("/"); int dia = Integer.parseInt(date.substring(0, primeiraBarra)); int mes = Integer.parseInt(date.substring(primeiraBarra + 1, segundaBarra)); int ano = Integer.parseInt(date.substring(segundaBarra + 1)); GregorianCalendar gc = new GregorianCalendar(ano, mes, dia); return gc.getTime(); } } |
Para testar esse código vamos criar uma classe de testes JUnit, conforme código abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
package br.com.mauda.exemplos.dates.versao7.exemplo001.v1; import org.junit.Test; public class Teste { @Test public void testeOK(){ ConvertDate.parseDate("08/05/2016", "dd/MM/yyyy"); } @Test public void testeDataNula(){ ConvertDate.parseDate(null, "dd/MM/yyyy"); } @Test public void testeFormatoNulo(){ ConvertDate.parseDate("08/05/2016", null); } @Test public void testeDataFormatoDiferentes(){ ConvertDate.parseDate("08/05/2016", "yyyy/MM/dd"); } } |
Vamos avaliar esses testes unitários:
O primeiro ponto geral aqui é que em nenhum momento a data convertida não é verificada com a data original. Assim é uma falha muito grande nos testes, não validando se o objetivo do método está correto.
O segundo ponto é que em um dos testes estourou uma NullPointerException. Isso deveria ser tratado.
O terceiro ponto é que o formato passado não é respeitado, visto que o terceiro e o quarto testes não respeitam esse formato de data.
Assim existem diversos pontos que não estão cobertos por esse método de conversão de datas. E aí o que é mais fácil? Criar um método novo, mexer nesse método, utilizar outras classes para chegar ao mesmo objetivo? Isso veremos na continuação desse devaneio semana que vem…
Para facilitar esses códigos estão disponíveis no projeto Exemplos no Repositório Git do Bitbucket. Se você não sabe como clonar um repositório, veja meus tutoriais Versionamento Git na IDE Eclipse.
finnaly{
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply