问题

我想要一个计时器,它将接受秒,分钟,小时,天,并从那里开始递增,比如用户打开一个页面,其中从服务器获取的时间是说 2 hours 30 minutes 05 seconds, ,现在javascript计时器将开始从这个开始递增,所以它 02:30:05 然后 02:30:06 .. 02:31:00 等等。.只要秒达到60分钟递增

我试过的

我已经实现了相同的使用时刻。js的

var duration = moment.duration({
    'seconds': 30,
        'hour': 2,
        'minutes': 10
});
var interval = 1;
setInterval(function () {
    duration = moment.duration(duration.asSeconds() + interval, 'seconds');
    //.asSeconds() 
    $('.countdown').text(Math.round(duration.asHours()) + 'h:' + Math.round(duration.asMinutes()) + 'm:' + Math.round(duration.asSeconds()) + 's'); //.seconds() 
    $('.countdown1').text(duration.days() + 'd:' + duration.hours() + 'h:' + duration.minutes() + 'm:' + duration.seconds() + 's');

}, 1000);

[医]JSfiddle

要求

我想知道我如何使用实现它 javascript/jquery的 如果可能的话,我会使用 moment.js 一个,我环顾四周,但都有倒数计时器从日期创建,所以输入将是 seconds, minutes, hours, days 并且计数器将以递增的方式从那里开始

有帮助吗?

解决方案

你可以尝试这样简单的东西:

var input = {year: 0, month: 0, day: 0, hours: 2, minutes: 10, seconds: 30};

var timestamp = new Date(input.year, input.month, input.day, 
                         input.hours, input.minutes, input.seconds);

var interval = 1;

setInterval(function () {
    timestamp = new Date(timestamp.getTime() + interval * 1000);     
    $('.countdown2').text(timestamp.getDay()+'d:'+timestamp.getHours()+'h:'+
       timestamp.getMinutes()+'m:'+timestamp.getSeconds()+'s');
}, Math.abs(interval) * 1000);

每个间隔,您都会递增Date对象的时间值,然后重新读取小时/分钟/秒,并让本机日期实现担心从原始秒转换。间隔可以是正的,也可以是负的,并且可以像你喜欢的那样大。

示范

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top