2012-01-24 37 views
6

tôi cần phải phân tích một chuỗi mà không ban đầu đã năm thiết lập như "ngày 13 tháng 8 11:30"Mặc định ngày năm thiết lập tại 1970

nhưng khi tôi ra ngày nó thêm năm, tôi cố gắng thiết lập năm nhưng năm là hoàn toàn sai đầu ra đến như "Thu Aug 13 11:30:00 GMT 3911"

Có cách nào để đặt năm sau ngày được phân tích cú pháp không?

SimpleDateFormat formatter = new SimpleDateFormat("dd MMM HH:mm"); 

String dateStr = "13 Aug 11:30"; 
Date fromDate = (Date)formatter.parse(dateStr); 


fromDate.setYear(2011); 
+0

tiêu đề không mô tả các câu hỏi có vẻ như? –

+0

Tại sao không thêm năm vào chuỗi trước khi bạn phân tích cú pháp? –

+0

@Martin Vì tôi đang phân tích cú pháp Date từ thẻ html và không có năm –

Trả lời

11

Sử dụng Calendar để thiết lập năm:

Calendar c = Calendar.getInstance(); 
c.setTime(fromDate); 
c.set(Calendar.YEAR, 2011); 
fromDate = c.getTime(); 
+1

+1 để sử dụng cách không được sử dụng trong năm. – Dev

3

Bạn đã đọc API cho phương thức setYear chưa?

Thiết lập năm của đối tượng ngày này là giá trị quy định cộng 1900

2011 + 1900 = 3911

3

Các tài liệu cho java.util.Date bang khá rõ setYear() có thêm 1900 đến năm trôi qua in. Chỉ cần trừ 1900 từ đối số của bạn.

+0

Hãy coi chừng năm nhuận: 1900 không phải là năm nhuận nhưng năm 2000 là năm. Tôi đồng ý với nhận xét của bạn về việc thêm năm vào chuỗi; dường như đơn giản nhất đối với tôi. – MRAB

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