如何使用 javascript/jquery 在时间字符串中添加一秒

Posted

技术标签:

【中文标题】如何使用 javascript/jquery 在时间字符串中添加一秒【英文标题】:How to add one second to a time string with javascript/jquery 【发布时间】:2012-10-09 18:21:12 【问题描述】:

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

时间字符串:03:31:15

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


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

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

【问题讨论】:

不要这样做...保留一个时间对象,然后每秒将一个新格式化的字符串转储到您的#worked 容器中。这将节省您将字符串格式解析回时间值、更新它然后再次转换回字符串的大量开销。 developer.mozilla.org/en-US/docs/JavaScript/Reference/…。附言Google 上的“JavaScript 时间”会有所帮助。 setInterval 对于这种事情来说是不可靠的。仅仅因为您将间隔速率设置为一秒并不意味着它将每秒调用一次。 【参考方案1】:

假设您首先使用 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 here。

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

【讨论】:

【参考方案2】:

下面是一个如何在时间字符串中添加秒的示例。您可以使用 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())

【讨论】:

【参考方案3】:

如果你想保持一个实时的计数器,你应该使用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;

【讨论】:

【参考方案4】:

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

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

演示

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

【讨论】:

其实这不是我要找的。我需要根据来自数据库的时间字符串开始计数

以上是关于如何使用 javascript/jquery 在时间字符串中添加一秒的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jquery/javascript 将文本插入 json [重复]

如何使用 JavaScript/JQuery 创建一个简单的地图 [重复]

如何使用 Javascript/jQuery 确定图像是不是已加载?

如何使用 Javascript/jQuery 确定图像是不是已加载?

如何使用 PHP 或 JavaScript/jQuery 禁用地址栏?

Rails如何检测是不是使用javascript / jQuery插入了部分