【问题标题】:Countdown with moment.js用 moment.js 倒计时
【发布时间】:2014-01-04 20:59:55
【问题描述】:

我正在尝试使用 moment.js 对自下周一 00:00 以来的当前时间之间的秒数进行倒计时。

我查看了文档 (http://momentjs.com/docs/#/displaying/difference/),但我只是到了下周一之后的几天,这是我尝试编写的代码以进行倒计时。知道我做错了什么吗?

var datetime = $('.datetime'),

//Update countdown
update = function(){
        var now = moment();
            nextmonday = moment().day(1),
            diff = now.diff(nextmonday, 'seconds'),
            hours = Math.floor(diff / 3600),
            diff = diff - hours * 3600,
            minutes = Math.floor(diff / 60),
            seconds = diff - minutes * 60;

        datetime.html(diff);

    };

//If it's Monday do nothing
if (moment().day()!=1){
    update();
    setInterval(update, 1000);
}

【问题讨论】:

    标签: javascript time momentjs


    【解决方案1】:
    1. var now = moment(); 行有错字。将; 替换为,
    2. 您定义diff 两次,将第一个更改为其他名称,例如diffSec
    3. 您可能正试图在下周一的乞讨中有所作为。使用nextmonday = moment().day(1).startOf('day').add('days',7) 执行此操作

    工作示例:http://jsfiddle.net/jondlm/x4MM6/

    【讨论】:

    • 谢谢@Jondlm,它就像一个魅力,错误 1 ​​和 2 是我昨天晚上重写了代码;) 来​​实现下周一的 00.00 你不需要'add('days ',7),但其余代码运行良好!
    • 没问题。 add('days',7) 位有趣的是,周六我写答案时需要它,但今天不需要。我认为这是因为 moment 认为新的一周从星期日开始。您可能需要一种更智能的方法来确定nextmonday。我会写一个小循环,一次添加一天,直到星期一,然后使用它。很高兴它有帮助!
    • 您完全正确,moment.js 假定该周从星期日开始,因此您只需将 iso 设置为从星期一开始,瞧! nextmonday = moment().isoWeekday(1).day(1).startOf('day').add('days',7),
    • @AdriánPérez,啊哈!这是一个很好的解决方案,我没有意识到isoWeekday 是这样工作的。我会把那个放在后口袋里。
    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-20
    • 2020-09-04
    相关资源
    最近更新 更多