如何使用 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 确定图像是不是已加载?