Como converter String para Date em Java: Guia completo de string to date java
5 min5 minutos de leitura
5 min5 minutos de leitura
Autor(a)
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.
Inscreva-se em nossa Newsletter
Fique por dentro de conteúdos, insights e oportunidades do universo tech. Receba novidades e lançamentos direto no seu e-mail.
Se você pesquisou por 'string to date java', provavelmente quer aprender como transformar uma string em um objeto date em Java, formatando corretamente datas como dd/MM/yyyy em sistemas.
Neste artigo, você confere exemplos práticos e entende o funcionamento do java.util.Date, SimpleDateFormat e das novas APIs de data do Java.
Aqui na Alura, muitas vezes é necessário lidar com informações como nome e data de lançamento de um curso, recebidas em formato de texto (String):
publicclassCurso {
privateString nome;
privateDate dataDeLancamento;
publicvoidsetLancamento(Date data) {
this.lancamento = data;
}
// resto do código
}
Porém, quando eu recebo a informação `dataDeLancamento` ela é passada em String. Essa situação é bastante comum, pois várias APIs e formulários retornam datas em formato de texto:
String dataRecebida = "23/11/2015";
Se você pesquisou por 'java string to date', 'java convert string to date' ou ainda 'date java from string', é provável que esteja numa situação dessas. Vamos aprender a resolver.
Como especificar o formatador para converter String em Date no Java
E se eu imprimir essa data? Qual resultado aparece?
System.out.println(data);
Resultado:
> Mon Nov 23 00:00:00 BRST 2015
Como formatar data em Java dd/MM/yyyy ao imprimir String to Date
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
Ponto importante sobre SimpleDateFormat: SimpleDateFormat NÃO é thread-safe e pode causar problemas graves em ambientes multi-thread, incluindo resultados incorretos e exceções como NumberFormatException. Se você precisa usar SimpleDateFormat em aplicações multi-thread, considere usar ThreadLocal ou, preferencialmente, migre para DateTimeFormatter do Java 8+, que é thread-safe e imutável.
Como converter String para Date usando Calendar em Java
Para manter a compatibilidade com bibliotecas antigas, converter o tipo `Date` para `Calendar` é simples:" l:
Embora seja uma abordagem mais antiga, é importante compreender a compatibilidade com diferentes APIs de datas.
Um ponto importante é que segundo discussões na OpenJDK (maio 2022), há propostas para deprecar Date, Calendar e SimpleDateFormat. Essas classes legadas devem ser evitadas em código novo, sendo mantidas apenas para compatibilidade com código antigo.
Conheça as APIs do Java mais recentes para datas
A partir do Java 8 (2014), foi introduzida a classe LocalDate do pacote "java.time", o qual possui uma melhor abstração no tratamento de datas.
Esta API moderna é thread-safe, imutável e resolve os problemas de design das classes legadas Date e SimpleDateFormat. Mas como posso converter String para `LocalDate`?
Para código novo, sempre prefira as classes do pacote “java.time” (LocalDate, LocalDateTime, ZonedDateTime, DateTimeFormatter) em vez de Date, Calendar e SimpleDateFormat. As classes legadas têm problemas conhecidos de design, não são thread-safe e há discussões para eventual deprecação futura.
Dica: veja também a documentação oficial do java.time.LocalDate para consultar outros formatos e usos.
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 tarefas como 'java string to date', 'convert string to date java' e 'formatar data java dd/mm/yyyy', é fundamental utilizar as classes e APIs de formato de data disponíveis na linguagem.
Quer se aprofundar nessa linguagem?
Se você quer se aprofundar na linguagem, confira a Trilha Java na Alura.
Se seu objetivo for seguir carreira nessa área, recomendamos que conheça a Carreira de Desenvolvimento Back-End Java, onde você segue um caminho organizado de evolução profissional, direto ao ponto. Uma jornada estruturada, com desafios reais, conteúdos práticos e tudo que o mercado espera.