2011-12-06 7 views
5

Phương pháp này là trên line 1380 in the jQuery ui datepicker:Ai đó có thể giải thích tại sao điều này trong jQuery UI Datepicker?

_daylightSavingAdjust: function(date) { 
    if (!date) { 
     return null; 
    } 
    date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
    return date; 
} 

Nó được sử dụng ở nhiều nơi trong các mã datepicker. Theo như tôi có thể nhìn thấy đoạn mã này sẽ chỉ cần thêm 2 giờ để bất kỳ thời điểm đó có những giờ> 12 trường hợp thiết lập giờ để 0.

Tôi đã thử nó trong giao diện điều khiển của tôi:

date = new Date(); 
console.log("" + date); 
date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0); 
console.log("" + date); 

Và tôi đã :

Tue Dec 06 2011 18:36:06 GMT+0100 (CET) 
Tue Dec 06 2011 20:36:06 GMT+0100 (CET) 
+0

Tôi đoán nó thực hiện những gì nó nói, điều chỉnh thời gian để tiết kiệm ánh sáng ban ngày cho các trường hợp mà đó là vấn đề. Nơi tôi sống mặc dù, tiết kiệm ánh sáng ban ngày chỉ là một giờ, không phải là hai giờ? – adeneo

+0

Đã thêm liên kết vào dòng mã thực tế trong câu hỏi của bạn. Có một bình luận trong đó, nhưng nó không làm cho vấn đề rõ ràng hơn nhiều. Có vẻ như họ đang cố gắng kích hoạt ngày để tăng đến ngày hôm sau trong một số trường hợp góc, nhưng tôi không thực sự theo logic. Tâm trí bạn, mã đó cũng thiết lập rõ ràng giờ thành '0' khi' <= 12'. –

+0

Sau khi xem xét kỹ hơn, tôi thấy rằng phương pháp này được sử dụng đúng với ngày tháng. Trong phương thức datepicker.parseDate, ví dụ, sau khi chuyển một ngày mới cho ánh sáng ban ngàySavingĐiều chỉnh nó, sau đó được kiểm tra xem có thay đổi hay không. Nếu nó đã làm, một lỗi được nêu ra. – disc0dancer

Trả lời

5

Các bình luận là một chút khó hiểu thật:

/* Handle switch to/from daylight saving. 
    Hours may be non-zero on daylight saving cut-over: 
    > 12 when midnight changeover, but then cannot generate 
    midnight datetime, so jump to 1AM, otherwise reset. 
    @param date (Date) the date to check 
    @return (Date) the corrected date */ 

datepicker tạo các đối tượng ngày trong ternally từ những ngày được chọn mà không chỉ định thời gian - vì vậy nửa đêm được sử dụng. Ở một số địa điểm, DST bắt đầu vào lúc nửa đêm, thời gian quay trở lại 11 giờ tối ngày hôm trước.

Vì vậy, chức năng này nhìn vào giờ của đối tượng Ngày để xác định xem nó có phải đẩy thời gian tới trước hai giờ để có được ngày chính xác không.