tl; dr
LocalDate.parse(
"19/05/2009" ,
DateTimeFormatter.ofPattern( "dd/MM/uuuu" )
)
Detail
Jawaban lain dengan java.util.Date, java.sql.Date, dan SimpleDateFormatsekarang ketinggalan jaman.
LocalDate
Cara modern untuk melakukan tanggal-waktu adalah bekerja dengan kelas java.time, khususnya LocalDate. The LocalDatekelas mewakili nilai tanggal-hanya tanpa waktu-of-hari dan tanpa zona waktu.
DateTimeFormatter
Untuk mengurai, atau menghasilkan, String yang mewakili nilai tanggal-waktu, gunakan DateTimeFormatterkelas.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
LocalDate ld = LocalDate.parse( "19/05/2009" , f );
Jangan menggabungkan objek tanggal-waktu dengan String yang mewakili nilainya. Objek tanggal-waktu tidak memiliki format , sedangkan String tidak. Objek tanggal-waktu, seperti LocalDate, dapat menghasilkan String untuk mewakili nilai internalnya, tetapi objek tanggal-waktu dan String adalah objek terpisah yang terpisah.
Anda dapat menentukan format kustom apa pun untuk menghasilkan String. Atau biarkan java.time melakukan pelokalan otomatis.
DateTimeFormatter f =
DateTimeFormatter.ofLocalizedDate( FormatStyle.FULL )
.withLocale( Locale.CANADA_FRENCH ) ;
String output = ld.format( f );
Buang ke konsol.
System.out.println( "ld: " + ld + " | output: " + output );
ld: 2009-05-19 | keluaran: mardi 19 mai 2009
Lihat aksinya di IdeOne.com .
Tentang java.time
The java.time kerangka dibangun ke Jawa 8 dan kemudian. Kelas-kelas ini menggantikan tua merepotkan warisan kelas tanggal-waktu seperti java.util.Date, Calendar, & SimpleDateFormat.
Proyek Joda-Time , sekarang dalam mode pemeliharaan , menyarankan migrasi ke kelas java.time .
Untuk mempelajari lebih lanjut, lihat Tutorial Oracle . Dan cari Stack Overflow untuk banyak contoh dan penjelasan. Spesifikasinya adalah JSR 310 .
Anda dapat bertukar objek java.time langsung dengan database Anda. Gunakan driver JDBC yang sesuai dengan JDBC 4.2 atau yang lebih baru. Tidak perlu string, tidak perlu java.sql.*kelas.
Dimana mendapatkan kelas java.time?
- Java SE 8 , Java SE 9 , dan yang lebih baru
- Bawaan.
- Bagian dari Java API standar dengan implementasi yang dibundel.
- Java 9 menambahkan beberapa fitur dan perbaikan kecil.
- Java SE 6 dan Java SE 7
- Sebagian besar fungsionalitas java.time di-back-port ke Java 6 & 7 di ThreeTen-Backport .
- Android
- Versi implementasi Android bundle kelas java.time yang lebih baru.
- Untuk Android sebelumnya (<26), yang ThreeTenABP proyek menyesuaikan ThreeTen-backport (disebutkan di atas). Lihat Cara menggunakan ThreeTenABP… .
Proyek ThreeTen-Extra memperluas java.time dengan kelas tambahan. Proyek ini adalah tempat pembuktian untuk kemungkinan penambahan java.time di masa mendatang. Anda mungkin menemukan beberapa kelas berguna di sini seperti Interval, YearWeek, YearQuarter, dan lebih .