2011-11-01 31 views
15

Tôi có một senario nơi tôi phải phân tích hai ngày cho ngày bắt đầu và ngày kết thúc ví dụ.Jquery Date.parse trả lại NaN trong trình duyệt Chrome?

var startdate = '02/01/2011'; 
var enddate = '31/12/2011'; 

Nhưng nếu chúng ta ngày bắt đầu cảnh báo

alert(Date.Parse(startdate)); i will get 1296498600000 

nhưng nếu tôi cảnh báo ENDDATE

alert(Date.Parse(enddate)); i will get NaN 

Nhưng điều này đang làm việc trong các trình duyệt khác, ngoại trừ Chrome, Nhưng trong các trình duyệt khác

alert(Date.Parse(enddate)); i will get 1370889000000 

Ai đó có thể kn một giải pháp cho việc này?

+2

Không thể tái sản xuất, làm việc cho tôi: http: // jsfiddle .net/b77DE/1/ –

+0

Làm việc cho tôi quá trong chrome. – Connell

+0

Ồ, và theo cách thức [phân tích cú pháp] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse), chuỗi sẽ được định dạng là ngày RFC822 hoặc ISO 8601. –

Trả lời

10

Nếu bạn muốn phân tích một ngày mà không khác biệt địa phương, sử dụng sau đây, thay vì Date.parse():

var enddate = '31/12/2011'; //DD/MM/YYYY 
var split = enddate.split('/'); 
// Month is zero-indexed so subtract one from the month inside the constructor 
var date = new Date(split[2], split[1] - 1, split[0]); //Y M D 
var timestamp = date.getTime(); 

Xem thêm: Date

+0

Điều này giúp tôi rất nhiều trong việc giải quyết, Cảm ơn Rob –

+0

Cảm ơn bạn đã nhấn một lỗi tương tự và bạn đã lưu tôi, +1 – iamserious

+0

Cẩn thận khi sử dụng tính năng này - nó chỉ bắt được tôi vì tháng có vẻ là 0 được lập chỉ mục vì một số lý do lạ ... var date = new Date (split [2], parseInt (split [1] - 1), split [0]); đã làm việc. –

2

Theo this

dateString Một chuỗi đại diện cho một RFC822 hoặc ISO 8601 ngày.

Tôi đã thử mã của bạn và tôi cũng nhận được NaN cho ngày kết thúc, nhưng nếu tôi đổi ngày và tháng xung quanh, nó hoạt động tốt.

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