【问题标题】:moment.js work out time leftmoment.js 剩下的工作时间
【发布时间】:2012-11-15 10:49:26
【问题描述】:

我正在尝试了解 moment.js 库,因为它似乎比 jquery 更稳定,并且 jquery date 之一是输出控制台错误。

http://momentjs.com/docs/#/manipulating/

我要做的是倒计时来计算从现在开始剩下的时间。

我的例子

var countDownTill = '2012-11-19 00:00:00 +0000';
document.write(moment(countDownTill).diff(moment(), 'months') + " months<br>");
document.write(moment(countDownTill).diff(moment(), 'weeks') + " weeks<br>");
document.write(moment(countDownTill).diff(moment(), 'days') + " days<br>");

哪个会输出

0 months
1 weeks
4 days

但总体而言,它并没有为每个值(天、周、月)做个人

所以,如果我将日期提前 12 个月,如下所示。

var countDownTill = '2013-11-19 00:00:00 +0000';
 document.write(moment(countDownTill).diff(moment(), 'months') + " months<br>");   
 document.write(moment(countDownTill).diff(moment(), 'weeks') + " weeks<br>");
 document.write(moment(countDownTill).diff(moment(), 'days') + " days<br>");

它输出。

12 months
53 weeks
369 days

我试图让它输出的地方

12 months
2 weeks
5 days

这里的例子 http://jsfiddle.net/fDmWH/3/

【问题讨论】:

    标签: javascript date momentjs


    【解决方案1】:

    它正在做你要求它做的事情。您需要使用刚刚获得的数字减少 countDownTill 值。代码:

    // Start date
    var countDownTill = new Date('2013-11-19 00:00:00 +0000');
    var now = new Date();
    
    document.write(countDownTill + '<br />');
    
    // Get the months
    var months = moment(countDownTill).diff(moment(), 'months');
    console.log(months);
    
    // Add months to the date
    now.setMonth(now.getMonth() + months);
    document.write(now + '<br />');
    
    // Get the weeks
    var weeks = moment(countDownTill).diff(now, 'weeks');
    // Seems like moment is doing something wrong here... it should be 0 weeks...
    // 15 Nov to 19 Nov is 0 weeks to me at least...
    console.log(weeks);
    
    // Add the weeks to the date
    now.setDate(now.getDate() + (7 * weeks));
    document.write(now + '<br />');
    
    var days = moment(countDownTill).diff(now, 'days');
    
    document.write(months + ' months ');
    document.write(weeks + ' weeks ');
    document.write(days + ' days ');
    

    【讨论】:

    • 您好,感谢您的回复,但通过尝试您的代码,我仍然得到相同的输出 jsfiddle.net/fDmWH/5 12 个月 53 周 369 天
    • 是的。您将不得不重新编写它。它只是伪代码,这意味着它仅显示如何执行此操作,不一定显示它可以工作......在这种情况下它不会。我会检查小提琴并对其进行更改以使其正常工作。
    • 更新了小提琴jsfiddle.net/fDmWH/6。不过,moment似乎有问题。我预计 0 周,因为它只有 4 天,但时刻说 1。
    • hmmmm 谢谢,我发现我使用这个库越多,就会出现一些几率错误;(现在要尝试修复这个问题
    • 我会说“远离几周”。它们一定会给你带来麻烦......除了瑞典人之外,还有其他人使用它们吗?)
    猜你喜欢
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多