【发布时间】:2015-09-04 13:51:30
【问题描述】:
我正在尝试制作一个 JavaScript 计时器,该计时器在启动时会开始计数。计时器只是从单击开始按钮到单击结束按钮的视觉参考。
我在网上找到了一个非常适合倒计时的插件,但我正在尝试修改它以进行倒计时。
我硬编码了未来的日期方式。我现在正试图让计时器开始计数到那个日期。每次点击开始按钮时都会重置。
这是我正在使用的功能。它可以完美地倒计时,但我不知道如何倒计时。
我认为这与计算差异的方式有关,但我相信它实际上发生在 //calculate dates 部分。
有没有一种简单的方法来反转这个数学并让它计数?
小提琴:http://jsfiddle.net/xzjoxehj/
var currentDate = function () {
// get client's current date
var date = new Date();
// turn date to utc
var utc = date.getTime() + (date.getTimezoneOffset() * 60000);
// set new Date object
var new_date = new Date(utc + (3600000*settings.offset))
return new_date;
};
function countdown () {
var target_date = new Date('12/31/2020 12:00:00'), // Count up to this date
current_date = currentDate(); // get fixed current date
// difference of dates
var difference = current_date - target_date;
// if difference is negative than it's pass the target date
if (difference > 0) {
// stop timer
clearInterval(interval);
if (callback && typeof callback === 'function') callback();
return;
}
// basic math variables
var _second = 1000,
_minute = _second * 60,
_hour = _minute * 60,
_day = _hour * 24;
// calculate dates
var days = Math.floor(difference / _day),
hours = Math.floor((difference % _day) / _hour),
minutes = Math.floor((difference % _hour) / _minute),
seconds = Math.floor((difference % _minute) / _second);
// fix dates so that it will show two digets
days = (String(days).length >= 2) ? days : '0' + days;
hours = (String(hours).length >= 2) ? hours : '0' + hours;
minutes = (String(minutes).length >= 2) ? minutes : '0' + minutes;
seconds = (String(seconds).length >= 2) ? seconds : '0' + seconds;
// set to DOM
//
};
// start
var interval = setInterval(countdown, 1000);
};
【问题讨论】:
-
你如何计算未来的某个日期。在标准的非摇摆不定的线性时间体验中,差异会减小
-
我想如果你有一个结束日期和一个开始日期,它会一直计数到结束日期。
-
您的代码没有开始日期,但有结束日期
-
对不起,忘记在帖子中包含它,但它在小提琴中。
-
不,小提琴只有未来的结束日期,没有过去的开始日期
标签: javascript jquery timer