2010-07-21 35 views
6

Tôi đã mất rất nhiều thời gian cho vấn đề này, vì vậy tôi đăng câu hỏi và trả lời từ những gì tôi đã học, như một nguồn lực để giúp đỡ những người khác. Bối cảnh của vấn đề là xây dựng một trình đọc RSS. Trong khi các ngày RSS được cho là phù hợp với RFC822, chúng làm như vậy theo những cách khác nhau để bạn muốn một phương thức linh hoạt. Tôi đã cố gắng sử dụng GWT DateTimeFormat cũng như mã hóa cứng một số mặt nạ khác nhau nhưng vẫn tiếp tục tìm kiếm testcases đã phá vỡ mã của tôi. Cuối cùng tôi đã vấp phải một giải pháp thanh lịch:Cách phân tích cú pháp ngày trong GWT?

Kết thúc cuộc gọi đến phương thức Date.parse() javascript. nó thực sự "chỉ hoạt động". Là một siêu lý thuyết, mà tôi sẽ cố gắng thử nghiệm khi tiếp tục phát triển, có thể có rất nhiều thứ "chỉ hoạt động" bằng cách sử dụng javascript gốc hoặc có thể các thư viện khác ngoài đó thay vì cố gắng buộc nó sử dụng Java trong GWT.

Chúc mừng!

+5

Mẹo hay! Như một lưu ý phụ, cách phổ biến để đăng câu hỏi và câu trả lời trên trang web này là đăng câu hỏi trước, sau đó đăng câu trả lời trong trường câu trả lời. Bạn sẽ có thể đánh dấu nó như là câu trả lời được chấp nhận (mặc dù không phải ngay lập tức) và nó cho người khác một cơ hội để đăng phương pháp riêng của họ để giải quyết vấn đề. – pkaeding

Trả lời

3

Sử dụng xử lý javascript gốc JSNI để bao bọc lệnh gọi đến phương thức Date.parse() javascript. Nó có thể xử lý nhiều định dạng hơn so với DateTimeFormat của GWT.

Mã bên dưới cung cấp bản trình diễn. Lưu ý GWT không cho phép javascript truyền các giá trị dài xung quanh vì vậy tôi đã sử dụng toString để hack xung quanh điều đó.

 public native String webDateToMilliSec(String webDate) /*-{ 
     var longDate = Date.parse(webDate); 
     return longDate.toString(); 
     }-*/; 

     public long getTimeStamp(final Element el) { 
      String sDate = getValueIfPresent(el, "pubDate"); 
      String sLongDate = webDateToMilliSec(sDate); 
      long longDate = Long.parseLong(sLongDate); 
      return longDate; 
     } 
+0

Có bất kỳ công cụ cụ thể nào của trình duyệt mà chúng tôi cần tìm kiếm không? Youd cũng có thể tinh chỉnh câu trả lời của bạn bằng cách thêm một số mã mẫu (tôi biết đó là công cụ cơ bản, nhưng vì bạn đã viết nó, tại sao không chia sẻ nó?;)) –

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