• Skip to primary navigation
  • Skip to content

Mauda

IT, Java and Music

Graduação   SCJP   Mestrado
  • Apresentação
  • Certificação Java
  • JPA
    • Exceptions
  • JSF
  • Versionamento
  • Contato

Conversão de Datas – Contexto do Problema

May 9, 2016 by Mauda Leave a Comment

Conteúdo do Post:
  1. Código inicial
  2. finnaly{

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.

Java
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:

Java
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!

 

Filed Under: Date, Java Tagged With: conversão, Date, GregorianCalendar, Java

About Mauda

Mestre em Informática, Analista de Sistemas, Professor, SCJP e Baterista. Desde 2002 trabalhando no mundo Java e ensinando pessoas sobre desenvolvimento de sistemas. Mais informações

Reader Interactions

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Advertisements

Copyright © 2025 · Genesis Framework · WordPress · Log in