Saya memiliki tanggal sebagai string dalam format berikut "04/02/2011 20:27:05"
. Saya menggunakan perpustakaan Joda-Time dan ingin mengubahnya menjadi DateTime
objek. Aku melakukannya:
DateTime dt = new DateTime("04/02/2011 20:27:05")
Tapi saya mendapatkan kesalahan berikut:
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
Bagaimana cara mengubah tanggal di atas menjadi DateTime
objek?
java.time
paket di Java 8, coba gunakanLocalDateTime.parse
atauInstant.parse
.Jawaban:
Gunakan
DateTimeFormat
:sumber
toString
fungsi, tapi aku tidak bisa mengurai dari itu:Invalid format: "31. Januar 2013 06:38:08 MEZ" is malformed at "MEZ"
. Apakah ini masalah yang diketahui? Bagaimana saya bisa menghindarinya? Salam.Saya tahu ini adalah pertanyaan lama, tetapi saya ingin menambahkan bahwa, pada JodaTime 2.0, Anda dapat melakukan ini dengan satu-baris:
sumber
sumber
Dari komentar saya memilih jawaban suka dan juga menambahkan TimeZone:
sumber
Format Anda bukan format ISO yang diharapkan, Anda harus mencoba
sumber
Anda juga dapat menggunakan SimpleDateFormat , seperti pada
DateTimeFormat
sumber
java.util.Date
,java.util.Calendar
, danjava.text.SimpleDateFormat
sekarang warisan , digantikan oleh java.time kelas dibangun ke Jawa 8 & Java 9. Lihat Tutorial oleh Oracle . Dan kelas java.time adalah thread-safe, tidak seperti kelas legacy.Anda memerlukan DateTimeFormatter yang sesuai dengan format yang Anda gunakan. Lihatlah dokumentasi untuk instruksi tentang cara membangunnya.
Tidak perlu, saya pikir Anda perlu
format = DateTimeFormat.forPattern("M/d/y H:m:s")
sumber
tl; dr
waktu java
Pendekatan modern menggunakan kelas java.time yang menggantikan proyek Joda-Time yang terhormat .
Parsing sebagai
LocalDateTime
input Anda tidak memiliki indikator zona waktu atau offset-dari-UTC.Tip: Jika memungkinkan, gunakan format ISO 8601 standar saat bertukar nilai tanggal sebagai teks daripada format yang terlihat di sini. Dengan mudah, kelas java.time menggunakan format standar saat parsing / menghasilkan string.
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. Spesifikasi adalah JSR 310 .
Di mana mendapatkan kelas java.time?
Proyek ThreeTen-Extra memperpanjang java.time dengan kelas tambahan. Proyek ini adalah ajang pembuktian untuk kemungkinan penambahan masa depan ke java.time. Anda mungkin menemukan beberapa kelas berguna di sini seperti
Interval
,YearWeek
,YearQuarter
, dan lebih .sumber
Metode sederhana:
sumber
Ada dua cara ini bisa dicapai .
DateTimeFormat
SimpleDateFormat
sumber
SimpleDateFormat
itu buruk menurut pendapat saya yang paling jujur.