2011-11-16 19 views
8

Ai có thể xin vui lòng cho tôi biết lý do tại sao tôi đang nhận được java.text.ParseException: Unparseable date trong đoạn mã sau:java.text.ParseException: ngày Unparseable:

import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.util.Locale; 


public class Testdate { 
    public static void main(String args[]) 
    { 
     String text = "2011-11-19T00:00:00.000-05:00"; 
     DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
     try { 
      Date parsed = sdf.parse(text.trim()); 
      System.out.println(parsed); 
     } catch (ParseException e) { 
      e.printStackTrace(); 
     } 
    } 

} 

Trả lời

9

của nó bởi vì đại tràng trong múi giờ của bạn. Xóa nó và nó sẽ hoạt động:

String text = "2011-11-19T00:00:00.000-0500"; 
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); 
+0

bạn đã sử dụng một Chuỗi khác, nhưng Chuỗi thực tế là "2011-11-19T00: 00: 00.000-05: 00"; , Tôi muốn đại tràng cũng – Pawan

+0

chỉ là giải thích tại sao nó không thành công, và một cách làm thế nào để làm việc xung quanh nó. – Chris

+0

Tôi sẽ điều tra lý do tại sao bạn nhận được một ngày, mà không phải là RFC phù hợp .. bạn có thể workaround nó bằng cách chỉ cần loại bỏ các tràng cuối cùng, nhưng điều này rõ ràng là một công việc xấu xung quanh. – Chris

5

Z một phần của mô hình hỗ trợ SimpleDateFormat 's không xử lý bù với colons in.

Tôi khuyên bạn nên sử dụng Joda Time thay vào đó, sử dụng ISODateFormat.dateTime() để có trình định dạng phù hợp.

(Xem similar-but-not-quite-the-same-question này từ trước ngày hôm nay để biết thêm thông tin.)

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