Theo mặc định, phương pháp toString
của Instant
sử dụng trình định dạng DateTimeFormatter.ISO_INSTANT. formatter rằng sẽ không in các chữ số cho phần-of-thứ hai nếu chúng xảy ra là 0.java.time Định dạng ngày ISO với các chữ số millis cố định (trong Java 8 trở lên)
java-time ví dụ:
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07Z
Joda-Time ví dụ (và những gì tôi mong đợi từ java.time):
2015-10-08T17:13:07.589Z
2015-10-08T17:13:07.000Z
Điều này thực sự bực bội khi phân tích cú pháp trong một số hệ thống. Elasticsearch là vấn đề đầu tiên tôi gặp phải, không có định dạng được xác định trước hỗ trợ tùy chọn millis, nhưng tôi có thể có thể làm việc xung quanh đó với một định dạng tùy chỉnh. Mặc định có vẻ như sai.
Dường như bạn không thể tạo chuỗi định dạng của riêng mình cho Instants. Là tùy chọn duy nhất thực hiện java.time.format.DateTimeFormatterBuilder.InstantPrinterParser của riêng tôi?
Mục tiêu của bạn là chỉ tìm xem ngày có độ chính xác đến mili giây không? –
Mục tiêu là định dạng ngày tháng đó với phần thứ hai phân số ngay cả khi các mili giây bằng 0. Nói cách khác, bắt chước những gì Joda làm. –
Nhắc nhở nhanh: java.time cung cấp độ phân giải [nano giây] (https://en.wikipedia.org/wiki/Nanosecond), trái ngược với độ phân giải mili giây của Joda-Time & java.util.Date. Điều đó có nghĩa là lên đến chín (9) chữ số của một phân số thứ hai. Vì vậy, nếu bạn giới hạn đến 3, bạn có thể ẩn/mất dữ liệu. Xem [sơ đồ này của tôi] (http://i.stack.imgur.com/OW0RW.png). –