2011-06-17 18 views
0

如果我有一個表示時間以下字符串:繼續從時間的字符串表示時鐘

var s = "22:01:15"; 

我想增加與時間與系統時鐘沿,但添加到現有的價值。

無論計算機的實際時鐘時間是多少,我該如何繼續下去?

+2

編輯成更容易理解 –

回答

4

只要看看那個時候,它解析爲Date實例,並確定和系統的日期之間的差異。然後應用該偏移量。

  1. 解析它:

    var parts = str.split(":"); 
    
  2. 應用,爲日期

    var dt = new Date(); 
    dt.setHours(parseInt(parts[0], 10)); 
    dt.setMinutes(parseInt(parts[1], 10)); 
    dt.setSeconds(parseInt(parts[2], 10)); 
    
  3. 獲取差異

    var diff = new Date().getTime() - dt.getTime(); 
    
  4. 應用它隨時喲你就像要顯示值

    var now = new Date(new Date().getTime() - diff); 
    
  5. 使用now實例,以顯示

你做的步驟1 - 4次,在一開始;然後根據需要重複步驟5。

Live example

+0

寫在功能和我們以下代碼的setTimeout(函數(){timeCount()},1000); –

+0

@iUngi要從超時功能中自動更新'now',至少需要2倍的期望觀測頻率 - 或500ms(這可以通過仔細安排來避免)。我只需要調用函數來根據需要計算'now'(保持上述說明)。 – 2011-06-17 21:21:25

+0

@iUngi:的確,但這可以簡單地設置爲'setTimeout(timeCount,1000);'對於這種事情,我看到很多粒度問題,所以我傾向於更低的數字。但是,這是主意。 –

0

你可以嘗試使用類似countdown plugin的東西,並做一個計數。

$('#sinceCountdown').countdown({since: CUSTOMTIMEVAR, 
    format: 'HMS', description: 'Custom Time'}); 
0

下面的腳本會爲你做它:

總之,它需要一些時間之間的區別在這段時間裏,它與當前的日期進行比較,然後使用上的間隔差更新當前時間。

var t = $('#time').text().split(":"); 

var d = new Date(2011, 01, 01 , t[0], t[1], t[2],0); 
var d1 = new Date(); 

var diff = d.getTime()-d1.getTime(); 


window.setInterval(function(){ 

d1 = new Date(); 
d1.setTime(d1.getTime()+diff); 
    $('#time').text(ze(d1.getHours())+":"+ze(d1.getMinutes())+":"+ze(d1.getSeconds())); 
},1000); 


function ze(num) { 
    if (num.toString().length<=1){ 
    return "0"+num; 
    }else{ 
    return num; 
    } 
} 

工作示例:http://jsfiddle.net/niklasvh/xsVD4/

相關問題