javascript - 使用 Moment.js 实现 24 小时倒数计时器

标签 javascript timer momentjs

我需要帮助在 moment.js 中实现 24 小时倒数计时器。这是我的代码:

<script>
window.onload = function(e){

var $clock = $('#clock'),

duration1 = moment.duration({
    'seconds': 30,
    'hour': 0,
    'minutes': 0,
    'days':0
});
duration2 = moment.duration({
    'seconds': 60,
    'hour': 0,
    'minutes': 0,
    'days':0
});

diff=duration2-duration1;
duration=moment.duration(diff, 'milliseconds');


interval = 1000;
setInterval(function(){    
    duration = moment.duration(duration.asMilliseconds() - interval, 'milliseconds');            
    $('#clock').text(duration.days() + 'd:' + duration.hours()+ 'h:' + duration.minutes()+ 'm:' + duration.seconds() + 's');    
 }, interval);
</script>

问题是每当我刷新页面时,计时器也会刷新。我该如何解决这个问题。如果有更好的方法来实现这一点,请分享。

谢谢

最佳答案

我会这样做:

// create the timestamp here. I use the end of the day here as an example
const end = moment().endOf('day'); 

setInterval(function() {
    const timeLeft = moment(end.diff(moment())); // get difference between now and timestamp
    const formatted = timeLeft.format('HH:mm:ss'); // make pretty

    console.log(formatted); // or do your jQuery stuff here
}, 1000);

这将像这样每秒打印一个时间戳:

09:49:25 
09:49:24 
09:49:23 
09:49:22 
...

关于javascript - 使用 Moment.js 实现 24 小时倒数计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42835387/

相关文章:

javascript - tsconfig 中的模块选项是用来做什么的?

javascript - 将 JavaScript 中的 JSON 数组与

javascript - 我无法使用 peerjs Webrtc 在 Safari 浏览器上接收或发送视频流

go - 如何在 context.WithDeadline 或简单计时器之间做出决定?

javascript - 如何在 vue cli 中使用 Moment.js

javascript - 当我点击提交按钮时在 php 中定位我想转到两个不同的 URL

c# - 同步 Forms.Timer 和 Diagnostics.Stopwatch

linux - Linux 的 alarm() 是如何被内核处理的

Angular Material2 日期选择器 - 动态格式化

javascript - v3 有办法重新获取 fullcalendar 吗?