Tôi cố gắng để sử dụng Java 8 ngày mẫu mới thay vì Joda và tôi có vấn đề sau đây:Java 8 LocalDateTime ZonedDateTime không thể phân tích ngày với múi giờ
Cả
ZonedDateTime.parse("02/05/16 11:51.12.083 +04:30", DateTimeFormatter.ofPattern("dd/MM/yy HH:mm.ss.SSS Z"))
và
LocalDateTime.parse("02/05/16 11:51.12.083 +04:30", DateTimeFormatter.ofPattern("dd/MM/yy HH:mm.ss.SSS Z"))
ném ngoại lệ 'java.time.format.DateTimeParseException'. Trong khi
org.joda.time.DateTime.parse("02/05/16 11:51.12.083 +04:30", DateTimeFormat.forPattern("dd/MM/yy HH:mm.ss.SSS Z"))
hoạt động tốt.
Nguyên nhân của ngoại lệ là:
java.time.format.DateTimeParseException: Văn bản '02/05/16 11: 51.12.083 04: 30' không thể được phân tích ở chỉ số 22
Tôi có làm gì sai không?
Các bạn đã thử OffsetDateTime? Nó không chứa đủ thông tin để biết múi giờ thực tế; tất cả nó mang là bù đắp từ UTC. –
Mặc dù từ ví dụ trong [tài liệu] (https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html), có vẻ như dấu hai chấm được chấp nhận là vùng phân tách bù trừ nhưng khi bạn thử nó, nó ném ngoại lệ. nếu bạn chỉ cần loại bỏ các đại tràng nó sẽ làm việc. vì vậy chuỗi ngày giờ của bạn phải là '02/05/16 11: 51.12.083 + 0430' –
@Hank DI đã thử OffsetDateTime.parse này ("02/05/16 11: 51.12.083 +04: 30", DateTimeFormatter.ofPattern ("dd/MM/YY HH: mm.ss.SSS Z")) nhưng tôi vẫn nhận được ngoại lệ tương tự. – ampofila