Làm cách nào để chuyển đổi chuỗi thành LocalDate
?Chuỗi để LocalDate
Tôi đã thấy ví dụ như:
LocalDate dt = new LocalDate("2005-11-12");
Nhưng chuỗi của tôi là như sau:
2005-nov-12
Làm cách nào để chuyển đổi chuỗi thành LocalDate
?Chuỗi để LocalDate
Tôi đã thấy ví dụ như:
LocalDate dt = new LocalDate("2005-11-12");
Nhưng chuỗi của tôi là như sau:
2005-nov-12
Khi bạn sử dụng Joda Thời gian, bạn nên sử dụng DateTimeFormatter
:
final DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MMM-dd");
final LocalDate dt = dtf.parseLocalDate(yourinput);
Nếu sử dụng Java 8 hoặc mới hơn, sau đó tham khảo hertzi's answer
Bạn có thể phải đi từ DateTime để LOCALDATE.
DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("yyyy-MMM-dd");
DateTime dateTime = FORMATTER.parseDateTime("2005-nov-12");
LocalDate localDate = dateTime.toLocalDate();
cảm ơn bạn. điều này là hoàn hảo khi sử dụng các phiên bản cũ thiếu 'LocalDate.parse' và' DateTimeFormatter.parseLocalDate' – thedarklord47
Datetime định dạng được thực hiện bởi các org.joda.time.format.DateTimeFormatter class
. Ba lớp cung cấp các phương thức nhà máy để tạo các trình định dạng và đây là một phương thức. Những người khác là ISODateTimeFormat
và DateTimeFormatterBuilder
.
DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MMM-dd");
LocalDate lDate = new LocalDate().parse("2005-nov-12",format);
final org.joda.time.LocalDate class
là một lớp datetime bất biến đại diện cho một ngày không có múi giờ. LocalDate
là an toàn và không thay đổi được, với điều kiện là Chronology cũng vậy. Tất cả các lớp Chronology tiêu chuẩn được cung cấp đều an toàn và không thay đổi được.
Kể từ Java 1.8, bạn có thể đạt được điều này mà không có một thư viện thêm:
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);
Cú pháp là gần như nhau mặc dù.
java.time.format.DateTimeParseException: Văn bản '2005-nov-12' không thể được phân tích cú pháp tại chỉ mục 5 –
Điều này xảy ra vì Locale mặc định của bạn mong đợi 'N' của 'Nov' là chữ hoa. – hertzi
Xem [Câu trả lời của tôi] (http://stackoverflow.com/a/38904830/642706) cho một câu hỏi tương tự để thảo luận thêm về cách tiếp cận này. –
+1 để sử dụng DateTimeFormatter.parseLocalDate(), mặc dù người dùng đang tìm kiếm tháng có 3 chữ cái. –
Rất tiếc ... Đã sửa lỗi, cảm ơn (sẽ dạy tôi đọc thêm) – fge
Cũng đã gửi bản chỉnh sửa cho định dạng "yyyy-MMM-dd". YYYY là năm của thời đại, và (hơn egregiously) DD là ngày trong năm. –