2017-12-05 129 views
13

Tôi đang cố chuyển đổi một chuỗi thành đối tượng LocalDateTime.Tại sao phân tích ngày này không thành công?

@Test 
public void testDateFormat() { 
    String date = "20171205014657111"; 
    DateTimeFormatter formatter = 
     DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS"); 
    LocalDateTime dt = LocalDateTime.parse(date, formatter); 
} 

Tôi hy vọng thử nghiệm này sẽ được thông qua.

tôi nhận được lỗi sau:

java.time.format.DateTimeParseException: Text '20171205014657111' could not be parsed at index 0

+0

trình tốt trên máy tính của tôi: 'dt = 2017-12-05T01: 46: 57.111' – alfasin

+0

@alfasin phiên bản JVM bạn có đang chạy? – user4184113

+1

Không hoạt động trên mỏ. Loại kỳ lạ - tôi mong đợi nó. –

Trả lời

17

Hình như tôi có thể đã chạy ngang qua lỗi này: https://bugs.openjdk.java.net/browse/JDK-8031085 vì nó tương ứng với phiên bản JVM Tôi đang sử dụng. Cách giải quyết trong các ý kiến ​​sửa các vấn đề đối với tôi:

@Test 
public void testDateFormat() { 
    String date = "20171205014657111"; 
    DateTimeFormatter dtf = new DateTimeFormatterBuilder() 
     .appendPattern("yyyyMMddHHmmss") 
     .appendValue(ChronoField.MILLI_OF_SECOND, 3).toFormatter(); 
    LocalDateTime dt = LocalDateTime.parse(date, dtf); 
} 
+2

Ồ, wow, thật đáng thất vọng. Tôi tự hỏi tại sao họ trì hoãn nó đến 9, thay vì sửa nó trong lần xây dựng tiếp theo là 8. –

Các vấn đề liên quan