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
giờ đây là lỗi thời.
LocalDate
Cách hiện đại để thực hiện date-time là làm việc với các lớp java.time, cụ thể là LocalDate
. Các LocalDate
lớp đại diện cho một giá trị ngày tháng chỉ mà không cần thời gian của ngày và không có múi giờ.
DateTimeFormatter
Để phân tích cú pháp hoặc tạo một Chuỗi đại diện cho giá trị ngày-giờ, hãy sử dụng DateTimeFormatter
lớp.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd/MM/uuuu" );
LocalDate ld = LocalDate.parse( "19/05/2009" , f );
Không kết hợp đối tượng ngày-giờ với một Chuỗi đại diện cho giá trị của nó. Một đối tượng ngày thời gian có không định dạng , trong khi một String hiện. Đối tượng ngày-giờ, chẳng hạn LocalDate
, có thể tạo 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 );
Đổ vào bảng điều khiển.
System.out.println( "ld: " + ld + " | output: " + output );
ld: 2009-05-19 | đầu ra: mardi 19 mai 2009
Xem thực tế trong IdeOne.com .
Giới thiệu về java.time
Khung java.time được tích hợp sẵn trong Java 8 trở lên. Những lớp học thay thế cái cũ phiền hà di sản lớp học ngày thời gian như java.util.Date
, Calendar
, & SimpleDateFormat
.
Các Joda thời gian dự án, bây giờ trong chế độ bảo trì , khuyên chuyển đổi sang các java.time lớp.
Để tìm hiểu thêm, hãy xem Hướng dẫn Oracle . Và tìm kiếm Stack Overflow để có nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310 .
Bạn có thể trao đổi các đối tượng java.time trực tiếp với cơ sở dữ liệu của mình. Sử dụng trình điều khiển JDBC tương thích với JDBC 4.2 trở lên. Không cần chuỗi, không cần java.sql.*
lớp.
Lấy các lớp java.time ở đâu?
- Java SE 8 , Java SE 9 và mới hơn
- Được xây dựng trong.
- Một phần của API Java tiêu chuẩn với triển khai theo gói.
- Java 9 bổ sung một số tính năng nhỏ và các bản sửa lỗi.
- Java SE 6 và Java SE 7
- Phần lớn chức năng của java.time được chuyển ngược sang Java 6 & 7 trong ThreeTen-Backport .
- Android
- Các phiên bản triển khai gói Android mới hơn của các lớp java.time.
- Đối với Android trước đó (<26), các ThreeTenABP dự án thích nghi ThreeTen-backport (nêu trên). Xem Cách sử dụng ThreeTenABP… .
Các ThreeTen-Extra dự án mở rộng java.time với các lớp bổ sung. Dự án này là cơ sở chứng minh cho những bổ sung có thể có trong tương lai cho java.time. Bạn có thể tìm thấy một số các lớp học hữu ích ở đây chẳng hạn như Interval
, YearWeek
, YearQuarter
, và nhiều hơn nữa .