从时间的字符串表示继续时钟

时间:2011-06-17 21:02:07

标签: javascript jquery

如果我有以下代表时间的字符串:

var s = "22:01:15";

我希望将该时间与系统时钟一起增加,但添加到我现有的值。

无论实际的计算机时钟是多少,我如何继续使用它,就好像它是真正的时钟一样?

3 个答案:

答案 0 :(得分: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实例显示

  6. 你一开始就做了一次步骤1 - 4;然后根据需要重复步骤5.

    Live example

答案 1 :(得分:0)

您可以尝试使用类似countdown plugin的内容并进行计数。

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

答案 2 :(得分: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/