Como converter String para Date em Java: Guia completo de string to date java

Alex Felipe
Alex Felipe

Compartilhe

Avalie este artigo

O que significa converter String para Date em Java? 

Converter uma string para Date em Java (ou string to date java) é uma necessidade comum ao lidar com entradas de usuário, integrações ou arquivos. A manipulação de data em Java é uma habilidade fundamental para qualquer desenvolvedor Java. 

public class Curso { 
private String nome;  
private Date dataDeLancamento; 
public void setLancamento(Date data) {  
    this.lancamento = data;  
} 
// resto do código 
}

Porém, muitas vezes, a informação dataDeLancamento é recebida como uma String: 

String dataRecebida = “23/11/2015”;  
Banner de aniversário da Alura com mensagem sobre evolução de carreira em tecnologia. A imagem destaca a oportunidade de estudar e crescer profissionalmente com cursos online, com botão “Aproveite” para acessar a plataforma e desenvolver habilidades tech.

Como especificar um formatador para converter String para Date em Java 

Se você busca por Java convert string to date, este é um dos métodos tradicionais. O SimpleDateFormat é muito utilizado para formatar data Java “dd/MM/yyyy” e fazer a conversão de uma string em data. 

Importante: SimpleDateFormat não é thread-safe. Se você estiver usando esta classe em um ambiente multithread, é necessário criar instâncias separadas para cada thread ou sincronizar o acesso externamente. Para aplicações modernas, considere usar DateTimeFormatter (Java 8+), que é imutável e thread-safe

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. 

Como usar SimpleDateFormat para converter String em 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);

Mas, ao imprimir essa data, qual resultado realmente aparece? 

System.out.println(data);  

Resultado: 

> Mon Nov 23 00:00:00 BRST 2015  

Como formatar data em Java para o padrão após converter String em Date 

Note que, mesmo conseguindo converter uma String para Date, a representação padrão ao imprimir não será exatamente a que foi especificada no formato. Para exibir a data no formato “dd/MM/yyyy”, é preciso utilizar o método format() do objeto formato

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

Resultado: 

> 23/11/2015  

Como converter String em data usando Calendar em Java 

Apesar de o uso do Calendar ser menos comum em projetos mais recentes, ainda é importante para sistemas legados que fazem Java date from string. Entenda como fazer essa conversão: 

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. 

Nota: A classe Calendar também é mutável e não thread-safe, apresentando problemas como meses indexados em zero (Janeiro = 0, Dezembro = 11), o que é uma fonte comum de bugs. Para código novo em 2026, prefira sempre as APIs do pacote java.time

Como converter String para LocalDate no Java 8+  

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. As classes deste pacote são imutáveis e thread-safe, diferentemente de SimpleDateFormat, Date e Calendar

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

Resultado: 

> 2015-11-23 

Observe que o resultado é a impressão padrão fornecida pela classe LocalDate. Assim como no exemplo anterior, é preciso utilizar o formatador para exibir a data conforme o formato desejado: 

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. 

Se você deseja se aprofundar mais em manipulação de datas e outras novidades do Java atual, a plataforma da Alura oferece trilhas como Aprenda a programar em Java com Orientação a Objetos ou Java e Spring Boot, e não podemos esquecer da carreira Desenvolvimento Back-end Java

Avalie este artigo

Alex Felipe
Alex Felipe

Alex é instrutor e desenvolvedor e possui experiência em Java, Kotlin, Android. Atualmente cria conteúdo no canal https://www.youtube.com/@AlexFelipeDev.

Veja outros artigos sobre Mobile