Vì vậy, tôi đã lấy mã của bạn và chạy nó và nó hoạt động tốt đối với tôi ...
Tôi nghĩ vấn đề bạn đang gặp phải là bạn đang mong đợi một LocalDate
để duy trì định dạng mà bạn ban đầu đã phân tích cú pháp đối tượng, đây không phải là cách LocalDate
hoạt động.
LocalDate
là đại diện của ngày hoặc khoảng thời gian, nó không phải là một định dạng.
LocalDate
có toString
phương thức có thể được sử dụng để kết xuất giá trị của đối tượng, nó, đây là một định dạng bên trong được đối tượng sử dụng để cung cấp một biểu diễn có thể đọc được của con người.
Để định dạng ngày, bạn cần sử dụng một số loại định dạng, sẽ lấy mẫu bạn muốn và một giá trị ngày và trả về một String
Ví dụ, đoạn mã sau ...
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
String date = "16-Mar-05";
DateTimeFormatter dtf = DateTimeFormat.forPattern("dd-MMM-yy");
LocalDate localDate2 = dtf.parseLocalDate(date);
System.out.println(localDate2 + "/" + dtf.print(localDate2));
//second way
LocalDate localDate3 = LocalDate.parse(date, DateTimeFormat.forPattern("dd-MMM-yy"));
System.out.println(localDate3 + "/" + dtf.print(localDate3));
//third way
DateTimeFormatter FORMATTER = DateTimeFormat.forPattern("dd-MMM-yy");
DateTime dateTime = FORMATTER.parseDateTime(date);
LocalDate localDate4 = dateTime.toLocalDate();
System.out.println(localDate4 + "/" + FORMATTER.print(localDate4));
Sản xuất ...
2005-03-16/16-Mar-05
2005-03-16/16-Mar-05
2005-03-16/16-Mar-05
Trước khi bạn khó chịu về điều này, đây là cách Java Date
hoạt động tốt.