tl; dr
LocalDate.parse(
"19/05/2009" ,
DateTimeFormatter.ofPattern("dd/MM/uuuu")
)
Chi tiết
Các câu trả lời khác với java.util.Date
, java.sql.Date
, và SimpleDateFormat
bây giờ lỗi thời.
LocalDate
Cách hiện đại để làm ngày-thời gian là làm việc với các lớp java.time, cụ thể LocalDate
. Lớp LocalDate
đại diện cho giá trị chỉ ngày mà không có thời gian trong ngày và không có múi giờ.
DateTimeFormatter
Để phân tích cú pháp, hoặc tạo ra, một chuỗi đại diện cho một giá trị ngày tháng thời gian, sử dụng lớp DateTimeFormatter
.
DateTimeFormatter f = DateTimeFormatter.ofPattern("dd/MM/uuuu");
LocalDate ld = LocalDate.parse("19/05/2009" , f);
Không làm cho đối tượng ngày giờ có chuỗi đại diện cho giá trị của nó. Đối tượng ngày giờ có không định dạng, trong khi Chuỗi có. Đối tượng ngày giờ, chẳng hạn như LocalDate
, có thể tạo một Chuỗi để biểu thị giá trị bên trong của nó, nhưng đối tượng ngày giờ và Chuỗi là các đối tượng riêng biệt riêng biệt.
Bạn có thể chỉ định bất kỳ định dạng tùy chỉnh nào để tạo Chuỗi. Hoặc để java.time thực hiện công việc tự động bản địa hóa.
DateTimeFormatter f =
DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL)
.withLocale(Locale.CANADA_FRENCH) ;
String output = ld.format(f);
Dump to console.
System.out.println("ld: " + ld + " | output: " + output);
ld: 2009-05-19 | đầu ra: mardi 19 mai 2009
See in action in IdeOne.com.
Về java.time
Khung java.time được xây dựng vào Java 8 và sau đó. Các lớp này thay thế các lớp học ngày giờ legacy phiền hà cũ như java.util.Date
, Calendar
, & SimpleDateFormat
.
Dự án Joda-Time, hiện đang ở maintenance mode, khuyên di chuyển sang java.time.
Để tìm hiểu thêm, hãy xem Oracle Tutorial. Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310.
Nơi lấy các lớp java.time?
- Java SE 8 và SE 9 và sau
- Built-in.
- Một phần của API Java chuẩn với gói được triển khai.
- Java 9 thêm một số tính năng và bản sửa lỗi nhỏ.
- Java SE 6 và SE 7
- Hầu hết các chức năng java.time được back-chuyển đến Java 6 & 7 trong ThreeTen-Backport.
- Android
Dự án mở rộng ThreeTen-Extra java.time với các lớp bổ sung. Dự án này là một nền tảng chứng minh cho những bổ sung có thể có trong tương lai vào java.time. Bạn có thể tìm thấy một số lớp học hữu ích tại đây như Interval
, YearWeek
, YearQuarter
và more.
Đối tượng ngày không có định dạng, nó chỉ là số đại diện cho ngày tháng. Ngày có thể được biểu diễn bằng một Chuỗi có định dạng "yyyy-MM-dd". –