tl; dr
LocalDate.parse(
"19/05/2009" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu" )
)
Detalhes
As outras respostas com java.util.Date
, java.sql.Date
e SimpleDateFormat
agora estão ultrapassadas.
LocalDate
A maneira moderna de fazer data e hora é trabalhar com as classes java.time, especificamente LocalDate
. A LocalDate
classe representa um valor apenas de data sem hora do dia e sem fuso horário.
DateTimeFormatter
Para analisar ou gerar uma String representando um valor de data e hora, use a DateTimeFormatter
classe.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
LocalDate ld = LocalDate.parse( "19/05/2009" , f );
Não confunda um objeto de data e hora com uma String representando seu valor. Um objeto de data e hora não tem formato , enquanto uma String tem. Um objeto de data e hora, como LocalDate
, pode gerar uma String para representar seu valor interno, mas o objeto de data e hora e a String são objetos distintos separados.
Você pode especificar qualquer formato personalizado para gerar uma String. Ou deixe java.time fazer o trabalho de localização automática.
DateTimeFormatter f =
DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH ) ;
String output = ld.format( f );
Despeje para o console.
System.out.println( "ld: " + ld + " | output: " + output );
ld: 2009-05-19 | saída: mardi 19 mai 2009
Veja em ação em IdeOne.com .
Sobre java.time
A estrutura java.time é integrada ao Java 8 e posterior. Essas classes suplantar os velhos problemáticos legados aulas de data e hora, como java.util.Date
, Calendar
, e SimpleDateFormat
.
O projeto Joda-Time , agora em modo de manutenção , aconselha a migração para as classes java.time .
Para saber mais, consulte o tutorial Oracle . E pesquise no Stack Overflow para muitos exemplos e explicações. A especificação é JSR 310 .
Você pode trocar objetos java.time diretamente com seu banco de dados. Use um driver JDBC compatível com JDBC 4.2 ou posterior. Não há necessidade de cordas, não há necessidade de java.sql.*
classes.
Onde obter as classes java.time?
- Java SE 8 , Java SE 9 e posterior
- Construídas em.
- Parte da API Java padrão com uma implementação agrupada.
- Java 9 adiciona alguns recursos e correções menores.
- Java SE 6 e Java SE 7
- Grande parte da funcionalidade java.time é portada para Java 6 e 7 no ThreeTen-Backport .
- Android
- Versões posteriores de implementações de pacotes Android das classes java.time.
- Para anteriormente Android (<26), o ThreeTenABP projeto adapta ThreeTen-Backport (mencionados acima). Consulte Como usar o ThreeTenABP… .
O projeto ThreeTen-Extra estende java.time com classes adicionais. Este projeto é um campo de provas para possíveis adições futuras ao java.time. Você pode encontrar algumas classes úteis aqui, como Interval
, YearWeek
, YearQuarter
, e mais .