2011-08-10 38 views

Trả lời

11

RFC 3339 mô tả cụ thể ISO 8601 'tiểu sử' cho đại diện ngày/giờ.

Nếu sử dụng thư viện nguồn mở của bên thứ ba là một tùy chọn, hãy xem lớp tiện ích ISODateTimeFormat của Joda-Time.

Nếu không, nếu bạn cần triển khai mã của riêng mình, không đủ để sử dụng SimpleDateFormat vì cách thức ISO 8601/RFC 3339 đại diện cho thông tin múi giờ.

Nếu tất cả các bạn cần phải phân tích là trong 'Z' (Zulu hoặc UTC), sau đó nó là tương đối đơn giản:

String input = "2011-08-11T01:23:45.678Z"; 
TimeZone utc = TimeZone.getTimeZone("UTC"); 
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
f.setTimeZone(utc); 
GregorianCalendar cal = new GregorianCalendar(utc); 
cal.setTime(f.parse(input)); 
System.out.println(cal.getTime()); 

nên in ra "2011-08-11T01: 23: 45.678Z" trong cài đặt múi giờ địa phương.

Nếu bạn cần xử lý các múi giờ tùy ý trong RFC 3339 thì bạn sẽ cần phải mở rộng ở trên để phân tích cú pháp trình chỉ định múi giờ và truy xuất phiên bản Java TimeZone tương ứng. Đó không phải là quá khó nếu nó chỉ là toàn bộ giờ +/- GMT, nhưng trong trường hợp bù trừ phi tiêu chuẩn, bạn có thể phải tạo ra cá thể SimpleTimeZone của riêng bạn.

0
private static SimpleDateFormat DATE_TIME_FORMAT=new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'"); 

DATE_TIME_FORMAT.setTimeZone(TimeZone.getID()); //for example 
date=DATE_TIME_FORMAT.format(curDate); 
+0

Tôi đã đề cập đến định dạng ngày đang đến. Ngày đó có định dạng RFC3339. Nếu bạn có bất kỳ ý tưởng nào về cách phân tích ngày RFC3339 thì vui lòng cho tôi biết. – sunil

+0

Đã chỉnh sửa ở trên, có hữu ích không? Điều này có thể giúp: http://cokere.com/RFC3339Date.txt – atzu

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