Javascript 下一分钟开始时的开始间隔
在我正在使用的日程表/日历应用程序中,我会显示一行以指示当前时间。我想每分钟更新一次这条线的位置 如果我在日历组件确实挂载或将挂载时启动setInterval函数,则会有一个更改,即它在59秒(或不是第一秒)开始,并且时间将始终不同于设备显示的时间(计算机、智能手机等) 但我希望这两个时间是匹配的。因此,我想知道是否有可能在新的一分钟开始时开始时间间隔,或者是否有其他方法获得时间更新 编辑:当前代码Javascript 下一分钟开始时的开始间隔,javascript,reactjs,time,setinterval,Javascript,Reactjs,Time,Setinterval,在我正在使用的日程表/日历应用程序中,我会显示一行以指示当前时间。我想每分钟更新一次这条线的位置 如果我在日历组件确实挂载或将挂载时启动setInterval函数,则会有一个更改,即它在59秒(或不是第一秒)开始,并且时间将始终不同于设备显示的时间(计算机、智能手机等) 但我希望这两个时间是匹配的。因此,我想知道是否有可能在新的一分钟开始时开始时间间隔,或者是否有其他方法获得时间更新 编辑:当前代码 componentDidMount() { setInterval(() => {
componentDidMount() {
setInterval(() => {
this.setState({ currentTime: new Date() })
}, 60 * 1000);
}
通过计算到下一分钟的秒数,并对差值执行超时,您可以非常接近
(函数showTime(){
console.log(“更新时间”);
var time=document.getElementById('time');
var now=新日期();
time.innerHTML=`${now.getHours()}:${now.getMinutes()}`;
setTimeout(showTime,(60-now.getSeconds())*1000);
})();代码>
使用SetTimeout调用一个函数,该函数修复每次迭代的任何偏差,并使用新的SetTimeout调用重新启动
function repairAndRelaunch (cnt) {
// capture current secs
var secs = (new Date()).getSeconds();
// relaunch with corrected seconds - limit iterations for testing
if (5 > cnt++) setTimeout('repairAndRelaunch(' + cnt + ')', (60-secs)*1000);
// log to observe discrepencies
console.log('for cnt = ' + cnt + ', secs = ' + secs);
};
// test control flow
window.onload = function() {repairAndRelaunch(0);};
只需在循环中使用新日期