2014-12-11 13 views
7

Có một hành vi kỳ lạ của phương pháp đặt ngày FireFox 34 setMinutes để đặt 60 phút cho năm 2008 01 tháng 1 23 giờ 00 phút 00 giây. Dự kiến ​​sẽ tăng ngày nhưng điều này không.FireFox 34 setMinutes BUG?

var initDate = [2008, 0, 1]; 
var d = new Date(initDate[0], initDate[1], initDate[2]); 
document.body.innerHTML += d + "<br/>"; 
d.setHours(23); 
d.setMinutes(60); 
document.body.innerHTML += d + "<br/>"; 

Các FireFox 34 kết quả là:

Tue Jan 01 2008 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 
Tue Jan 01 2008 23:00:00 GMT+0300 (Russia TZ 2 Standard Time) 

thay vì Chrome 39.0.2171.71 m:

Tue Jan 01 2008 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 
Wed Jan 02 2008 01:00:00 GMT+0400 (Russia TZ 2 Daylight Time) 

Nếu tôi thay đổi năm 2006 kết quả là ok:

Sun Jan 01 2006 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 
Mon Jan 02 2006 00:00:00 GMT+0300 (Russia TZ 2 Standard Time) 

http://jsfiddle.net/7dp8xvf8/1/

Đây có phải là lỗi không?

CẬP NHẬT: IE 8 và 9 có cùng hành vi, nhưng 10-11 là ok.

+2

Có một điểm rõ ràng là Chrome đã thay đổi múi giờ nhưng FireFox không có; Tôi cho rằng bạn đang ở vị trí đó, có bất kỳ thay đổi đáng kể nào vào thời điểm đó không? Tôi đã không thể tìm thấy bất cứ điều gì trực tuyến xung quanh ngày đó. –

+0

Bạn thấy hành vi nào nếu bạn 'setMinutes' nhỏ hơn' 60'? (ví dụ: 'd.setMinutes (58); 'sản xuất là gì?) Tôi không nghĩ rằng tôi có thể kiểm tra tập lệnh của bạn mà không thay đổi múi giờ/vị trí của trình duyệt của tôi. – apsillers

+0

@AdrianWragg Tôi đang ở vị trí đó nhưng trước khi cập nhật FireFox mới nhất, sự cố vẫn chưa xuất hiện. –

Trả lời

0

Với số specification, tôi tin rằng đây thực sự là hành vi dự định. Đặc biệt, lưu ý rằng MakeTime function không chứa kiểm tra tràn (tức là, nó không xác định số phút nhỏ hơn 60). Hàm MakeDate hoạt động tương tự; do đó, Firefox thực sự theo đúng đặc điểm kỹ thuật.

+0

Không, spec tính toán số-of-milliseconds-since-day-0 về cơ bản thêm các thành phần riêng lẻ. Do đó, đặt phút thành 60 sẽ thay đổi giờ. – Nickolay

0

này hoạt động như dự định cho tôi trong Firefox 39.0.3 cũng như sự phát triển hiện tại xây dựng (42a), khi tôi nhận được:

"Tue Jan 01 2008 00:00:00 GMT+0300 (MSK)" 
"Wed Jan 02 2008 00:00:00 GMT+0300 (MSK)" 

Đây cũng là những gì đặc ES đòi hỏi là.

Nếu điều này vẫn không hiệu quả với bạn (điều này sẽ gây ngạc nhiên) và đặc biệt nếu bạn thấy sự kỳ quặc liên quan đến múi giờ, bạn cũng nên đề cập đến cài đặt TZ hệ thống của bạn.