3

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

时间字符串:03:31:15

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

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

我应该在“???”中写什么?使这项工作?

4

4 回答 4

6

假设您首先使用 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);

编辑:在此代码中工作 jsFiddle 。

这是带有计时器的代码:jsFiddle

于 2012-10-09T18:31:22.110 回答
4

下面是一个关于如何在时间字符串中添加秒的示例。您可以使用日期对象以您想要的任何格式打印出字符串,在此示例中,我只是使用内置 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())
于 2012-10-09T18:44:51.960 回答
0

如果您尝试实时保持计数器,则应使用new Date()获取时间,然后对其进行格式化:

function updateWorked() {
    var time = new Date(),
        wtime = formatDate(time);
    $("#worked").html(wtime);
}

但是,如果您试图保持特定时间,那么您应该扩大 Date 对象的范围并使用它:

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;
}
于 2012-10-09T18:37:19.763 回答
-1

使用 jquery 和 javascript 的混合你可以实现这个例子。

我厌倦了实现您要寻找的东西,首先创建了一个日期对象并获取时间、分钟和秒的所有值,然后替换该值。请看一下jsfiddle

演示

http://jsfiddle.net/saorabhkr/xtrpK/

于 2012-10-09T18:40:13.403 回答