2010-08-25 21 views
10

tôi đang làm việc với các ngày trong một RSS feed, nhưng đang tìm kiếm các kết quả khác nhau khi sử dụng mã dưới đây vào trình duyệt IE, Chrome và Firefox:Vấn đề với định dạng ngày trong JavaScript với trình duyệt khác nhau

new Date('2001-01-01T12:00:00Z') 

Firefox là hài lòng với điều đó, nhưng Chrome và IE trả lại Ngày không hợp lệ.

tôi nghĩ rằng tôi muốn thử thay thế T và Z như sau:

new Date('2001-01-01 12:00:00') 

Lần này Chrome là hạnh phúc với điều đó, nhưng Firefox và IE trở Ngày không hợp lệ.

Bất kỳ ý tưởng nào tôi nên làm để có được đối tượng ngày trong tất cả các trình duyệt có định dạng này ?!

Rất cám ơn, Tim

Trả lời

23

này hoạt động trong tất cả các trình duyệt trên hộp của tôi - hãy thử nó trong giao diện điều khiển:

alert(new Date('2001/01/31 12:00:00')) 

nên

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/[T|Z]/g,' ')) 

IE8, FF3.6, Safari4, Chrome

+1

Bạn nói đúng, công trình này và đó là giải pháp tốt hơn so với tôi. – NicolasT

+0

Rất cám ơn! Thử nghiệm và làm việc cho tôi trong IE, FF, Chrome và Opera! – TimS

+0

Làm cách nào để thực hiện công việc này trên FF với múi giờ? Bởi vì ngày mới này ('2001-01-01T12: 00: 00 + 1000'.replace (/ \ -/g,' \/'). Thay thế (/ [T | Z]/g,' ')) ' trả về Ngày không hợp lệ trong FF, nhưng hoạt động trong IE/Chrome –

1

Bạn có thể thử:

new Date(2001,0,1,12,0,0) 

Điều này có nghĩa:

new Date(year,month,day,hour,minutes,seconds) 
+3

Bạn có nghĩa là new Date (2001,0,1,12,0,0) kể từ tháng JS bắt đầu với 0 – mplungjan

+0

tôi sẽ chỉnh sửa, bạn nói đúng – NicolasT

+0

Hãy cẩn thận với leading 0s. 08 và 09 là số bát phân không hợp lệ – mplungjan

3

Bạn cũng có thể thử sử dụng Date.js - một mã nguồn mở thư viện javascript ngày thao tác.

+0

Đề xuất tuyệt vời! Cảm ơn – TimS

+0

Ngoài ra momentjs (www.momentjs.com) sẽ loại bỏ sự khác biệt về trình duyệt. – Quango

3

này hoạt động trên tất cả các 5 trình duyệt chính và gây ra tất cả các trình duyệt để nhận ra thời gian như giờ GMT/UTC chứ không phải theo giờ địa phương (hậu tố Z có nghĩa là thời gian là UTC):

new Date('2001-01-01T12:00:00Z'.replace(/\-/g,'\/').replace(/T/,' ').replace(/Z/,' -0')) 

Tôi cảm ơn mplungjan cho câu trả lời của mình.

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