Bagaimana cara mengonversi string menjadi LocalDate
?
Saya telah melihat contoh seperti:
LocalDate dt = new LocalDate("2005-11-12");
Tapi senar saya seperti:
2005-nov-12
Bagaimana cara mengonversi string menjadi LocalDate
?
Saya telah melihat contoh seperti:
LocalDate dt = new LocalDate("2005-11-12");
Tapi senar saya seperti:
2005-nov-12
Jawaban:
Saat Anda menggunakan Joda Time, Anda harus menggunakan DateTimeFormatter
:
final DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);
Jika menggunakan Java 8 atau yang lebih baru, lihat jawaban hertzi
Sejak Java 1.8, Anda dapat mencapai ini tanpa perpustakaan tambahan dengan menggunakan kelas java.time . Lihat Tutorial .
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
formatter = formatter.withLocale( putAppropriateLocaleHere ); // Locale specifies human language for translating, and cultural norms for lowercase/uppercase and abbreviations and such. Example: Locale.US or Locale.CANADA_FRENCH
LocalDate date = LocalDate.parse("2005-nov-12", formatter);
Sintaksnya hampir sama.
Anda mungkin harus beralih dari DateTime ke LocalDate.
Menggunakan Waktu Joda:
DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd");
DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12");
LocalDate localDate = dateTime.toLocalDate();
Pemformatan tanggal waktu dilakukan oleh org.joda.time.format.DateTimeFormatter class
. Tiga kelas menyediakan metode pabrik untuk membuat pemformat , dan ini satu. Yang lainnya adalah ISODateTimeFormat
dan DateTimeFormatterBuilder
.
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd");
LocalDate lDate = new LocalDate().parse("2005-nov-12",format);
final org.joda.time.LocalDate class
adalah kelas datetime tetap yang mewakili tanggal tanpa zona waktu . LocalDate
adalah benang-aman dan abadi , asalkan Kronologi adalah juga. Semua kelas Kronologi standar yang disediakan aman untuk thread dan tidak dapat diubah.
DateTimeFormatter
memiliki format bawaan yang dapat langsung digunakan untuk mengurai urutan karakter. Ini case Sensitive, Nov akan bekerja namun nov dan NOV tidak akan bekerja:
DateTimeFormatter pattern = DateTimeFormatter.ofPattern("yyyy-MMM-dd");
try {
LocalDate datetime = LocalDate.parse(oldDate, pattern);
System.out.println(datetime);
} catch (DateTimeParseException e) {
// DateTimeParseException - Text '2019-nov-12' could not be parsed at index 5
// Exception handling message/mechanism/logging as per company standard
}
DateTimeFormatterBuilder
menyediakan cara kustom untuk membuat formatter. Tidak Peka Kasus, Nov, nov dan NOV akan diperlakukan sama.
DateTimeFormatter f = new DateTimeFormatterBuilder().parseCaseInsensitive()
.append(DateTimeFormatter.ofPattern("yyyy-MMM-dd")).toFormatter();
try {
LocalDate datetime = LocalDate.parse(oldDate, f);
System.out.println(datetime); // 2019-11-12
} catch (DateTimeParseException e) {
// Exception handling message/mechanism/logging as per company standard
}