2011-12-06 6 views
5

Tôi đang phân tích định dạng ngày này từ XML: => "2011-12-06T07: 41: 14,016 + 00: 00", và tôi nhận được lỗi này:SimpleDateFormat ParseException: Unparseable Lỗi ngày

  • W/System.err (574): java.text.ParseException: ngày Unparseable: "2011-12-06T07: 41: 14,016 + 00: 00"

tôi chắc chắn đó là câu lệnh định dạng tôi đang sử dụng, nhưng tôi không thể tìm ra nó là gì ...

Dưới đây là báo cáo kết quả Tôi đang sử dụng:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ:ss"); 

tôi nhận được như thế nào để tạo ra một định dạng cho phần này: "2011-12-06T07: 41: 14 ....", đó là này khác part: => ".016 + 00: 00" đó là ném cho tôi một vòng lặp.

Tôi đã nhìn cho câu trả lời ở đây đã: Android SimpleDateFormat Page, và đây Oracle SimpleDateFormat Page, nhưng tôi sợ tôi là thiếu một cái gì đó cơ bản ....

Bạn có bất cứ đề xuất về một tuyên bố định dạng thích hợp cho điều đó ngày cụ thể định dạng, hoặc tài nguyên thích hợp để nghiên cứu?

Cảm ơn bạn trước!

+0

Bạn nên kiểm tra câu hỏi có liên quan này http://stackoverflow.com/questions/ 909022/whats-the-best-way-to-parse-an-xml-datetime-trong-java – Craigy

Trả lời

5

Các "Z" mô hình phù hợp với 0000 và không 00: 00 vì vậy nếu bạn loại bỏ cuối cùng ":" trước khi bạn phân tích sau đó nó sẽ làm việc.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm:ss.SSSZ"); 
try { 
    Date myDate = sdf.parse("2011-12-06T07:41:14.016+00:00".replaceAll("([0-9\\-T]+:[0-9]{2}:[0-9.+]+):([0-9]{2})", "$1$2")); 
    System.out.println(myDate); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 
+0

Tuyệt vời! Bạn đá! :-) Điều đó khiến tôi không bị kẹt giấy ... Cảm ơn! Bây giờ có một cách khác để thực hiện phân tích cú pháp ngày có thể xử lý tốt hơn các biến thể mà định dạng ngày tháng. Tôi đã có một số nhưng họ là clunky. – ProfVersaggi

2
"yyyy-MM-dd'T'HH:mm:ss.SSSZ" 2001-07-04T12:08:56.235-0700 

Các: ss ở cuối trông không chính xác