在我正在处理的议程/日历应用程序中,我显示一行以指示当前时间。我想每分钟更新这条线的位置。
如果我在日历组件确实要安装或将要安装时启动setInterval函数,则发生变化是它从第59秒(或不是第1秒)开始,并且时间将始终与设备正在显示(计算机,智能手机等)。
但是我希望两者都匹配。所以我想知道是否有可能在新的分钟开始时开始间隔,或者是否还有另一种获取时间更新的方法。
编辑:当前代码
componentDidMount() {
setInterval(() => {
this.setState({ currentTime: new Date() })
}, 60 * 1000);
}
答案 0 :(得分:1)
您可以通过计算直到下一分钟的秒数,并对差异进行超时来达到相当接近的水平。
(function showTime(){
console.log('update time');
var time = document.getElementById('time');
var now = new Date();
time.innerHTML = `${now.getHours()}:${now.getMinutes()}`;
setTimeout(showTime, (60 - now.getSeconds()) * 1000);
})();
<div id="time"></div>
答案 1 :(得分:0)
使用SetTimeout调用一个函数,该函数可修复每次迭代的任何偏差并重新调用setTimout重新启动。
@foreach (string paygroup in Model.Paygroups)
{ // build your table }