2016-09-06 60 views
1

我一直在DateRangeSlider工作了幾天,現在我使用它作爲一個時間滑塊 -​​ fiddleJQDateRangeSlider變化的開始/結束值

我的問題是,最小時間是02:00它需要是00:00,最長時間是01:59而不是23:59。

如果我改變了格式化值從

h = val.getHours(), 
m = val.getMinutes(); 

h = val.getUTCHours(), 
m = val.getUTCMinutes(); 

它會顯示正確的開始,結束時間,但是當我得到這些值:

var values = $("#slider").dateRangeSlider('values'); 
var test = values.min; 

它仍然獲得其他值:02:00而不是00:00。

是否有任何方法來格式化最小/最大值,但是當讀取的值顯示相同的小時?

+0

你檢查了我的答案嗎?這是第一個,我相信它是正確的。 – Dekel

+0

Dekel - 我也檢查了你的答案,但是它的問題是,默認值也提前了+2小時,並且在我改變最小和最大範圍的情況下。 – Dana

+0

而這正是我的解決方案給你的。 + 2小時與您所在的時區有關。我的答案中的解決方案將確保您的代碼適用於每個日期和每個時區(不管您身處何處),而且您不需要將字符串拆分爲(年,月,日)等...您可以使用您的原始值而不需要字符串操作。 – Dekel

回答

1

您需要考慮時區和夏令時(Date()對象依賴它們)。

您的解決方案可能是:

var minDateStr = "2014-01-01T00:00:00Z"; 
var maxDateStr = "2014-01-01T23:59:00Z"; 
var min2 = new Date(new Date(minDateStr).getTime() + new Date(minDateStr).getTimezoneOffset() * 60000), 
    max2 = new Date(new Date(maxDateStr).getTime() + new Date(maxDateStr).getTimezoneOffset() * 60000); 

這裏是一個修復你的jsfiddle:
http://jsfiddle.net/z1govrt7/

+0

你是對的!謝謝! :) – Dana

0

我已經更新了日期和時間格式如下

var min2 = new Date(2014, 0, 1, 00, 00, 00), 
    max2 = new Date(2014, 11, 31, 23, 59, 59); 

請檢查http://jsfiddle.net/LJrYf/149/小提琴現在。

我已更新您的代碼,現在按預期工作。

+0

謝謝Yogesh! :) – Dana