tl; dr
ZonedDateTime.now(ZoneId.of("Asia/Kolkata"))
.format(DateTimeFormatter.ofLocalizedDateTime (FormatStyle.FULL).withLocale (Locale.FRENCH))
java.time
các mã trong câu hỏi sử dụng rắc rối cũ ngày thời gian các lớp, giờ được thừa kế, được thay thế bởi các lớp java.time được xây dựng trong Java 8 trở lên.
Khu vực địa lý và múi giờ không liên quan gì đến nhau. Miền địa phương xác định các tiêu chuẩn ngôn ngữ và văn hóa của con người được sử dụng khi tạo một Chuỗi để biểu thị một giá trị ngày giờ. Múi giờ xác định wall-clock time của một vùng cụ thể được sử dụng để đại diện cho một thời điểm trên dòng thời gian.
Lớp Instant
đại diện cho một thời điểm trên dòng thời gian ở UTC với độ phân giải nanoseconds (tối đa chín (9) chữ số thập phân).
Instant instant = Instant.now();
2016-10-12T07: 21: 00.264Z
Áp dụng một múi giờ để có được một ZonedDateTime
. Tôi tự ý chọn hiển thị khoảnh khắc này bằng múi giờ Ấn Độ. Cùng một thời điểm, cùng một điểm trên dòng thời gian.
ZoneId z = ZoneId.of("Asia/Kolkata");
ZonedDateTime zdt = instant.atZone(z);
2016-10-12T12: 51: 00.264 + 05: 30 [Asia/Kolkata]
Tạo một String bằng cách sử dụng địa phương của Québec Canada. Hãy để java.time tự động bản địa hóa chuỗi.
Locale l = Locale.CANADA_FRENCH;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime (FormatStyle.FULL).withLocale (l);
String output = zdt.format (f); // Indian time zone with Québécois presentation/translation.
mercredi 12 Octobre 2016 12 h 51 IST
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
, & java.text.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.
thật không may, điều này không bao gồm giây. – lenooh