2010-04-24 43 views
33

Làm cách nào tôi có thể phân tích pubDate từ nguồn cấp dữ liệu RSS thành đối tượng Ngày trong java.Phân tích cú pháp RSS pubDate thành Ngày đối tượng trong java

Định dạng trong RSS feed: Sat, 24 Tháng tư 2010 14:01:00 GMT

Những gì tôi có vào lúc này:

DateFormat dateFormat = DateFormat.getInstance(); 
Date pubDate = dateFormat.parse(item.getPubDate().getText()); 

Nhưng mã này ném một ParseException với thông điệp Unparseable ngày

Trả lời

63

bạn có thể xác định định dạng ngày bạn đang cố gắng để phân tích, sử dụng lớp SimpleDateFormat:

DateFormat formatter = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz"); 
Date date = formatter.parse("Sat, 24 Apr 2010 14:01:00 GMT"); 

Ngoài ra, để không phải tiếng Anh Locale 's, hãy chắc chắn để sử dụng sau khi phân tích số ngày bằng tiếng Anh:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.ENGLISH); 
13

Nếu bạn cần phải có một RFC822 ngày phù hợp, hãy thử này:

DateFormat dateFormatterRssPubDate = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z", Locale.ENGLISH); 
4

Đối với người may mắn có thể sử dụng Java 8 LocalDateTime:

LocalDateTime localDateTime = LocalDateTime.from(DateTimeFormatter.RFC_1123_DATE_TIME.parse("Sat, 24 Apr 2010 14:01:00 GMT")); 
+0

Điều đó không chỉ dễ dàng hơn, đó là lỗi đầu tiên và quan trọng nhất. Cảm ơn. PS 'LocalDateTime' và' DateTimeFormatter' đã được chuyển về Java 6 và 7 trong [ThreeTen Backport] (http://www.threeten.org/threetenbp/). –

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