2012-03-28 40 views
5

tôi đang cố gắng để tạo ra một đối tượng ngày mới từ chuỗi như sau:Javascript đối tượng Date mới từ String, kết quả khác nhau trên IE và FF

var myDate= new Date("1985-01-01T00:00:00.000-06:00"); 

Mở FireFox, nó cảnh báo như sau

Tue 01 Tháng Một 1985 00:00:00 GMT-0600 (Central Standard Time)

Mở IE8, nó cảnh báo như sau

NaN

Tại sao IE lại hoạt động theo cách này?

+0

có thể trùng lặp với [javascript ngày trong IE, NAN - firefox & chrome ok] (http://stackoverflow.com/questions/2182246/javascript-dates-in-ie-nan-firefox-chrome-ok) –

+1

Vì IE8 không hỗ trợ định dạng này. Đơn giản như thế. – BalusC

+0

Hi balusC, Whats cách đơn giản nhất để tạo một ngày với String cho IE là gì? – user1195192

Trả lời

5

Nhìn vào documetation định dạng phù hợp như sau:

new Date(year, month, day [, hour, minute, second, millisecond ]) 

Vì vậy, nếu bạn chạy đoạn mã sau nó sẽ được tốt trong tất cả các trình duyệt:

var myDate= new Date(1985, 01, 01 , 00, 06, 00, 0000000000); 
myDate // you get the right date in all browsers IE8/7 included 
+0

điều này sẽ không có ngày đúng, cos ie8 đếm tháng từ '0' không phải '1', vì vậy 'ngày mới (1985, 01, 01, 00, 06, 00, 0000000000)' nhận được tháng 2 không phải tháng 6, bạn cần phải giảm 1 khi bạn tham số tháng trước –

2

Hãy thử moment.js cho tất cả các sự cố JS Date của bạn.

+0

Bạn có thể cung cấp mẫu mã về cách moment.js có thể được sử dụng để trả lời câu hỏi không? – JustinStolle

+0

@JustinStolle var myDate = moment ('1985-01-01T00: 00: 00.000-06: 00'); – dontGoPlastic

0

Định dạng không được hỗ trợ bởi I E. Có lẽ bạn có thể thử sử dụng setUTCHours:

var rawdate = new Date("1985/01/01 00:00:00 GMT"); 
console.log(rawdate); 
    //=> in my timezone: Tue Jan 1 01:00:00 UTC+0100 1985 
console.log(rawdate.setUTCHours(-6)); 
    //=> in my timezone that results in: Mon Dec 31 19:00:00 UTC+0100 1984 

Hoặc có thể bạn có ý nghĩa (công trình trong IE, không phải trong các trình duyệt khác)?

var rawdate = new Date("1985/01/01 00:00:00 GMT-6"); 
    //=> Tue Jan 1 07:00:00 UTC+0100 1985 
Các vấn đề liên quan