我想知道如何使用jquery
或others jquery library
来检测或知道新的一天何时到来。
例如:
假设,现在是2016/06/23 23:59:50
。当second
来2016/06/24 00:00:00
时,jquery
可以检测到event
。
我知道我们可以使用setTimeOut
或setInterval
并在新的一天到来时检查每一秒。
但是我不想在上面使用这些方法,我们会检测哪些jquery方法?
答案 0 :(得分:6)
当日期发生变化时,没有自动事件被触发。您可以做的是计算日期更改之前的时间,并在发生这种情况时使用setTimeout
来运行函数。
var now = new Date;
var midnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
setTimeout(function() {
alert("It's tomorrow!");
}, midnight.getTime() - now.getTime());
new Date()
的参数是日期和时间的组成部分。省略时间参数会将它们全部默认为0
。因此,在日期中添加1并省略时间将返回下一个午夜的时间。
答案 1 :(得分:0)
你可以编写一个JavaScript类来连续采样时间并在事件发生时触发事件。你列出了jQuery,所以让我们用它来处理这些事件。
首先,让我们来制作抽样时间的课程:
function DayChecker() {
var self = this;
// Get a copy of now to compare against
self.lastDate = new Date();
// A function that compares now to the lastDate, and fires the event
// if different, and resets the lastDate
self.sample = function() {
var tempDate = new Date();
// Compare the day component of the last sampled time to the
// current time
if (self.lastDate.getDay() != tempDate.getDay()) {
// It changed, so fire the event!
$(self).triggerHandler('daychange');
};
// Update the last sampled date so this can run forever and
// trigger on every day change
self.lastDate = tempDate;
}
// for illustration, a function that force changes the last date
// to trigger the event
self.forceChange = function() {
// Add 1 day to the last sample time to trip the event
self.lastDate.setTime(self.lastDate.getTime() + (1 * 86400000));
};
// Now start sampling every second (or whatever accuracy you need)
setInterval(self.sample, 1000);
};
现在我们创建一个这个辅助类的新实例:
var dayChecker = new DayChecker();
听听我打电话给#34; daychange":
的事件$(dayChecker).on('daychange', function() {
alert('new day!');
});
最后,运行几秒后更改日期以进行测试的功能:
setTimeout(function() {
// Testing only!
dayChecker.forceChange();
}, 5000);
您应该在五秒钟后看到警报。