如何使用javascript/jquery向时间字符串添加1秒

如何使用javascript/jquery向时间字符串添加1秒,javascript,timer,seconds,Javascript,Timer,Seconds,我试图用Javascript创建一个计时器,但我不知道如何在时间字符串中添加一秒钟 时间字符串:03:31:15 function updateWorked() { var time = $("#worked").html(); ??? $("#worked").html(wtime); } $(document).ready(function() { setInterval('updateWorked()', 1000); }); 我

我试图用Javascript创建一个计时器,但我不知道如何在时间字符串中添加一秒钟

时间字符串:03:31:15

function updateWorked() {
        var time = $("#worked").html();
        ???
        $("#worked").html(wtime);
}

$(document).ready(function() {
    setInterval('updateWorked()', 1000);
});

我应该在“?”中写些什么来实现这一点呢?

假设您首先使用PHP之类的东西来获取时间字符串,并且您无法按照Marc B的建议将日期/时间作为数字进行跟踪,您可以自己这样解析字符串:

var $worked = $("#worked");
var myTime = $worked.html();
var ss = myTime.split(":");
var dt = new Date();
dt.setHours(ss[0]);
dt.setMinutes(ss[1]);
dt.setSeconds(ss[2]);
var dt2 = new Date(dt.valueOf() + 1000);
var ts = dt2.toTimeString().split(" ")[0];
$worked.html(ts);
编辑:处理此代码的中间部分


以下是带有计时器的代码:

如果您试图实时保存计数器,则应使用
new Date()
获取时间,然后格式化它:

function updateWorked() {
    var time = new Date(),
        wtime = formatDate(time);
    $("#worked").html(wtime);
}
但是,如果您试图保留特定的时间,则应扩大日期对象的范围并使用该对象:

var time = new Date(/* your starting time */);
function updateWorked() {
    time.setTime(time.getTime()+1000);
    var wtime = formatDate(time);
    $("#worked").html(wtime);
}
此外,您还需要添加一个
formatDate
函数:

function formatDate(date) {
  var hours = date.getHours().toString();
  if (hours.length < 2) hours = '0'+hours;
  var minutes = date.getMinutes().toString();
  if (minutes.length < 2) minutes = '0'+minutes;
  var seconds = date.getSeconds().toString();
  if (seconds.length < 2) seconds = '0'+seconds;
  return hours+':'+minutes+':'+seconds;
}
函数格式日期(日期){
var hours=date.getHours().toString();
如果(小时长度<2)小时='0'+小时;
var minutes=date.getMinutes().toString();
如果(分钟长度<2)分钟='0'+分钟;
var seconds=date.getSeconds().toString();
如果(秒长度<2)秒='0'+秒;
返回时数+':'+分钟+':'+秒;
}

使用jquery和javascript的混合,您可以实现这个示例

我想得到你想要的东西,首先创建一个日期对象,得到时间、分钟和秒的所有值,然后替换这些值。 请看一看JSFIDLE

演示


下面是一个如何向时间字符串添加秒的示例。您可以使用date对象以您想要的任何格式打印字符串,在本例中,我只是使用内置的toTimeString方法

var timeString = "10/09/2012 14:41:08";
// start time
var startTime = new Date(timeString);
// prints 14:41:08 GMT-0400 (EDT)
console.log(startTime.toTimeString())
// add a second to the start time
startTime.setSeconds(startTime.getSeconds() + 1);
// prints 14:41:09 GMT-0400 (EDT)
console.log(startTime.toTimeString())

不要这样做。。。保留一个time对象,并每秒将一个新格式化的字符串转储到您的#worked容器中。这将为您节省将字符串格式解析回时间值、更新它、然后再次转换回字符串的大量开销。。谷歌上的“JavaScript时间”有帮助。
setInterval
在这种情况下不可靠。仅仅因为您将间隔速率设置为1秒并不意味着它将每秒调用一次。实际上,这不是我想要的。我需要根据来自数据库的时间字符串开始计数