tl; dr
LocalDate.parse(
"19/05/2009" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu" )
)
Detale
Pozostałe odpowiedzi z java.util.Date
, java.sql.Date
i SimpleDateFormat
są obecnie nieaktualne.
LocalDate
Współczesnym sposobem określania daty i godziny jest praca z klasami java.time LocalDate
. LocalDate
Klasa reprezentuje wartość data-tylko bez time-of-day i bez strefy czasowej.
DateTimeFormatter
Aby przeanalizować lub wygenerować String reprezentujący wartość daty i godziny, użyj DateTimeFormatter
klasy.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
LocalDate ld = LocalDate.parse( "19/05/2009" , f );
Nie łącz obiektu daty i godziny z ciągiem znaków reprezentującym jego wartość. Obiekt daty i godziny nie ma formatu , podczas gdy String ma. Obiekt daty i godziny, taki jak LocalDate
, może generować String w celu reprezentowania jego wartości wewnętrznej, ale obiekt daty i godziny i String są oddzielnymi odrębnymi obiektami.
Możesz określić dowolny format niestandardowy, aby wygenerować ciąg. Lub pozwól java.time wykonać automatyczną lokalizację.
DateTimeFormatter f =
DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH ) ;
String output = ld.format( f );
Zrzuć na konsolę.
System.out.println( "ld: " + ld + " | output: " + output );
ld: 2009-05-19 | wyjście: mardi 19 maja 2009
Zobacz w akcji w IdeOne.com .
Informacje o java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak java.util.Date
, Calendar
, i SimpleDateFormat
.
Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Możesz wymieniać obiekty java.time bezpośrednio ze swoją bazą danych. Użyj sterownika JDBC zgodnego z JDBC 4.2 lub nowszym. Nie ma potrzeby stosowania ciągów ani java.sql.*
klas.
Skąd wziąć klasy java.time?
- Java SE 8 , Java SE 9 i nowsze
- Wbudowany.
- Część standardowego interfejsu API języka Java z dołączoną implementacją.
- Java 9 dodaje kilka drobnych funkcji i poprawek.
- Java SE 6 i Java SE 7
- Wiele funkcji java.time jest przenoszonych z powrotem do Java 6 i 7 w ThreeTen-Backport .
- Android
- Późniejsze wersje implementacji klas java.time w pakietach Androida.
- Dla wcześniejszej Androida (<26), ThreeTenABP projekt dostosowuje ThreeTen-backportu (jak wyżej). Zobacz Jak używać ThreeTenABP… .
Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem doświadczalnym dla ewentualnych przyszłych dodatków do java.time. Można znaleźć kilka przydatnych klas tutaj takie jak Interval
, YearWeek
, YearQuarter
, i więcej .