2009-09-11 38 views
8

Một máy khách JavaScript gửi một số chuỗi đến máy chủ của tôi, một trong số đó có dạng biểu diễn chuỗi của đối tượng Ngày tháng JavaScript.Chuỗi JavaScript phân tích cú pháp trong Java

Bây giờ, đối tượng Ngày tháng JavaScript này có định dạng riêng và tôi đã tự hỏi liệu có một lớp thực hiện chuyển đổi phù hợp hay không, vì tôi đang gặp sự cố với số SimpleDateFormatter.

Đây là cách một chuỗi ngày JavaScript trông giống như: Tue Feb 12 2013 21:12:28 GMT+0100 (CET)

+0

Các vấn đề của bạn với SimpleDateFormatter là gì? –

+0

Hãy thử moment.js, hãy tin tôi đi, bạn sẽ loại bỏ tất cả những vấn đề khó chịu này. –

Trả lời

11

Cách tốt nhất để tuần tự hóa ngày trong javascript là sử dụng toUTCString (không chỉ toString()); toUTCString sẽ tạo ra một ngày 822 của rfc (có cùng định dạng như được sử dụng bởi http). Sau đó, bạn chỉ có thể sử dụng mẫu SimpleDateFormat sau để phân tích cú pháp trong java:

new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH) 
+2

Nếu bạn không kiểm soát được nhà sản xuất của ngày và sử dụng '.toUTCString()' không phải là một tùy chọn, bạn có thể sử dụng định dạng này: '" EE MMM dy H: m: s 'GMT'Z (zz) "' –

3

Cá nhân tôi thích Joda Time và định dạng cho một lý do chính: họ là thread-safe và bất biến, vì vậy bạn có thể tạo một, giữ cho nó tĩnh, và tái sử dụng nó mà không có bất kỳ lo lắng nào. Joda cũng cho phép đặc tả dễ dàng về múi giờ vv Tất nhiên, họ kết thúc việc tạo ra các đối tượng Joda, đó là một lợi thế IMO khác - tôi cố gắng tránh xa API ngày/giờ của Java bất cứ khi nào có thể.

Có nói rằng, chúng tôi cần biết thêm về định dạng bạn đang cố gắng phân tích cú pháp và những gì xảy ra với SimpleDateFormatter. (Theo nguyên tắc chung, nếu bạn "gặp vấn đề" với điều gì đó và muốn những vấn đề đó được khắc phục, nó giúp mô tả vấn đề là gì, lý tưởng với chương trình ngắn nhưng đầy đủ để chứng minh vấn đề.)

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