Artigos de Tecnologia e Negócios > Mobile

Como converter String para Date em Java

Alex Felipe
Alex Felipe

Na Alura, eu preciso do nome e da data de lançamento de um curso:


public class Curso {

private String nome; 
private Date dataDeLancamento;

public void setLancamento(Date data) { 
    this.lancamento = data; 
}

// resto do código

}

Porém, quando eu recebo a informação dataDeLancamento ela é passada em String:

String dataRecebida = “23/11/2015”; 

Especificando o formatador

Para converter essa dataRecebida para a classe Date precisamos definir o formato esperado utilizando a classe SimpleDateFormat:

SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); 

Essa definição está especificando que esperamos uma data que contenha dia/mês/ano.

Usando o formatador para converter para Date

Mas e para converter de String para Date? Utilizaremos o método parse() do objeto formato:

Date dataFormatada = formato.parse(dataRecebida); 

Agora basta adicionar a data formatada para o objeto da classe Curso:


Curso novo = new Curso();

SimpleDateFormat formato = new SimpleDateFormat("dd/MM/yyyy"); 
Date data = formato.parse("23/11/2015");

novo.setLancamento(data);

E se eu imprimir essa data? Qual resultado aparece?

System.out.println(data); 

Resultado:

> Mon Nov 23 00:00:00 BRST 2015 

Imprimindo a data no formato desejado

Calma aí, não era isso que eu queria… Mesmo conseguindo converter uma String com um formato específico para Date o resultado esperado será de um tipo Date. Para que seja impresso o objeto data no formato dd/MM/yyyy usaremos o método format() do objeto formato!

System.out.println(formato.format(data)); 

Resultado:

> 23/11/2015 

Convertendo com a API Calendar

Ótimo! Conseguimos o resultado esperado. Para manter a compatibilidade com bibliotecas antigas, e converter para Calendar, é fácil:


Calendar calendar = Calendar.getInstance(); 
calendar.setTime(date);

System.out.println(formato.format(calendar.getTime()));

Resultado:

> 23/11/2015 

Mesmo sendo mais antigo, é importante compreender a existência da compatibilidade.

Conheça as APIs do Java mais recentes para datas

A partir do Java 8, foi introduzida a classe LocalDate do pacote "java.time", o qual possui uma melhor abstração no tratamento de datas. Mas como posso converter String para LocalDate?


DateTimeFormatter formato = DateTimeFormatter.ofPattern("dd/MM/yyyy"); 
LocalDate data = LocalDate.parse("23/11/2015", formato); 
System.out.println(data);

Resultado:

> 2015-11-23

Ops! Vamos lembrar que a impressão ainda é a padrão da classe, ou seja, da LocalDate. Da mesma forma que fizemos com a classe Date, temos que utilizar o objeto responsável pelo formato para imprimir a data conforme o esperado:

System.out.println(formato.format(data)); 

Resultado:

> 23/11/2015

Como vimos, para lidar com a tarefa de conversão de datas, precisamos utilizar uma classe responsável pelo formato que desejamos.

Pensando nisso tudo, o criador da Caelum, Paulo Silveira, resolveu criar um curso de java 8 e suas bibliotecas. Além disso, esse é um assunto amplamente coberto nos cursos presenciais de Java da Caelum e na formação Java aqui na Alura.

Leia também:

Artigos de Tecnologia e Negócios > Mobile

Cursos profissionais de Mobile é na Alura, comece agora!

  • 1155 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

Premium

  • 1155 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75
à vista R$900
Matricule-se

Premium Plus

  • 1155 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100
à vista R$1.200
Matricule-se

Max

  • 1155 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Projeto avaliado pelos instrutores

    Projeto práticos para entrega e avaliação dos professores da Alura com certificado de aprovação diferenciado

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120
à vista R$1.440
Matricule-se
Procurando planos para empresas?
Acesso por 1 ano
Estude 24h/dia onde e quando quiser
Novos cursos toda semana