2011-11-25 24 views
14

Tôi có chuỗi ngày "2011-11-24T09: 00: 27 + 0000" được tìm nạp từ API graph.facebook.javascript date.parse sự khác biệt trong chrome và các trình duyệt khác

Khi tôi chạy

var timestamp = Date.parse(facebookDate); 

trong chrome. Tôi nhận được một dấu thời gian có liên quan đến ngày! hoàn hảo!

Nhưng trong mọi trình duyệt chính khác ... tôi nhận được "NaN" !!! ?

Chắc chắn tất cả các trình duyệt này sử dụng cùng chức năng phân tích cú pháp javascript phải không?

Ai có thể giải thích lý do tại sao cùng một chức năng javascript cho kết quả khác nhau?

Và ai cũng có thể cho tôi biết làm thế nào để khắc phục vấn đề này ...

Cảm ơn trước

Alex

+0

Vui lòng xem tập lệnh được cập nhật từ tập lệnh đầu tiên THÊM khoản bù trừ thay vì trừ đi. – mplungjan

+5

" Chắc chắn tất cả các trình duyệt này đều sử dụng cùng một kết quả javascript parse function right? "Không. Chào mừng bạn đến với Web Development. – user123444555621

+0

@Alex - là nó luôn luôn +0000 vì chúng tôi chỉ có thể thay đổi nó thành Z – mplungjan

Trả lời

10

Đây là một bản sửa lỗi cho Firefox và IE/Safari (với sự giúp đỡ từ JavaScript: Which browsers support parsing of ISO-8601 Date String with Date.parse ):

DEMO

var noOffset = function(s) { 
    var day= s.slice(0,-5).split(/\D/).map(function(itm){ 
    return parseInt(itm, 10) || 0; 
    }); 
    day[1]-= 1; 
    day= new Date(Date.UTC.apply(Date, day)); 
    var offsetString = s.slice(-5) 
    var offset = parseInt(offsetString,10)/100; 
    if (offsetString.slice(0,1)=="+") offset*=-1; 
    day.setHours(day.getHours()+offset); 
    return day.getTime(); 
} 

Từ MDN

JavaScript 1.8.5 note

Một tập hợp con của tiêu chuẩn ISO 8601 chuỗi ngày định dạng hiện nay cũng có thể được phân tích cú pháp.

Cách khác, chuỗi ngày/giờ có thể ở định dạng ISO 8601. Bắt đầu với JavaScript 1.8.5/Firefox 4, một tập con của ISO 8601 được hỗ trợ. Ví dụ: "2011-10-10" (chỉ ngày) hoặc "2011-10-10T14: 48: 00 (ngày và giờ) có thể được chuyển và phân tích cú pháp. Thời gian trong các ngày ISO chưa được hỗ trợ, vd:" 2011- 10-10T14: 48: 00 + 0200 "(với múi giờ) không đưa ra kết quả mong muốn.

+1

Đẹp và hoạt động hoàn hảo. Cảm ơn bạn rất nhiều. – Warpling

+1

Cảm ơn bạn rất nhiều mplungjan, bạn đã cứu ngày của tôi !!! – avenet

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