我试图制作一个在浏览器中工作的UTC午夜的JavaScript倒计时器(通常转换为本地时间)。
这是我现在在我的网站上使用的东西。
setInterval(() => {
let toDate = new Date()
let tomorrow = new Date()
tomorrow.setHours(24, 0, 0, 0)
let diffMS =
tomorrow.getTime() / 1000 -
toDate.getTime() / 1000 -
toDate.getTimezoneOffset() * 60
let diffHr = Math.floor(diffMS / 3600)
diffMS = diffMS - diffHr * 3600
let diffMi = Math.floor(diffMS / 60)
diffMS = diffMS - diffMi * 60
let diffS = Math.floor(diffMS)
let result = diffHr + ' hours '
result += diffMi + ' minutes '
result += diffS + ' seconds '
this.timeRemaining = result
}, 1000)
不确定您的问题来自哪里,但使用由偏移量调整的当地时间有点令人担忧。此外,偏移量在DST边界上变化,因此这也可能是一个问题(或不是),因此倒计时将跳转等效于偏移量的变化(+或-)。
使用UTC方法设置结束并向下倒数要简单得多,例如。
// Return time to next UTC midnight as x hours x minutes x seconds
function toMidnightUTC(date = new Date()) {
let d = new Date(+date);
d.setUTCHours(24,0,0,0);
let diff = d - date;
return `${diff/3.6e6 |0} hours ` +
`${diff%3.6e6 / 6e4 |0} minutes ` +
`${diff%6e4 / 1000 |0} seconds`;
}
// Run 20ms after next full second
let runIt = ()=> {
document.getElementById('s0').textContent = toMidnightUTC();
let lag = 1020 - new Date() % 6e4;
setTimeout(runIt, lag);
};
// Start the process…
runIt();
<span id="s0"></span>
问题内容: 我已经在JavaScript中看到了许多倒数计时器,并希望在React中使用它。 我借用了我在网上找到的此功能: 然后我自己写了这段代码 当前onclick会将其在屏幕上的时间设置为: 但不会将其减少到,然后等等等 我想我需要使用其他参数再次调用该函数。我该怎么做呢? 编辑:我忘了说,我想要功能,这样我就可以使用秒到分钟和秒 问题答案: 您必须每秒剩余几秒钟(每次调用间隔)。这是一个例
问题内容: 我正在写一个基于AJAX / COMET的在线聊天室。我的设计是: 请求 -----------------等待------------------------->发送转储数据 -----------------等待------------------------->发送转储数据 -----------------等待------------------------->发送转储数据 -
问题内容: 浏览器是否内置了超时功能,如果可以,它们是什么? 我有一个页面,该页面在最多运行5分钟的进程上执行AJAX调用。有人说浏览器在2分钟后超时,但不知道这有什么道理。 问题答案: 它取决于浏览器。“默认情况下,InternetExplorer的KeepAliveTimeout值为一分钟,其他限制因素(ServerInfoTimeout)为两分钟。这两种设置都会导致InternetExplo
我正在尝试在两个日期之间创建倒计时,但时间过了一段时间就落后了。 我的PHP后端返回当前时间和未来X时间之间的差值,例如当前时间和提前2小时。这个差异在类,格式如下,我使用javascript函数对差异进行倒计时。以下是我的功能: 代码按预期工作,但几分钟后,比方说2-3分钟,如果您刷新页面或在新窗口中打开它,您将看到倒计时计时器落后秒/分钟。有人知道我做错了什么吗?
本文向大家介绍Flutter倒计时/计时器的实现代码,包括了Flutter倒计时/计时器的实现代码的使用技巧和注意事项,需要的朋友参考一下 在我们实现某些功能时,可能会有倒计时的需求。 比如发送短信验证码,发送成功后可能要求用户一段时间内不能再次发送,这时候我们就需要进行倒计时,时间到了才允许再次操作。 如下图: 为了实现这样场景的需求,我们需要使用 Timer.periodic 。 一、引入Ti