2012-11-15 144 views
-1

我想让我的脑袋绕过moment.js库,因为它看起来比jquery更稳定,而jquery日期之一是输出控制台错误。moment.js解决时间剩余

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 

那里,因为我试图得到它的输出这里 http://jsfiddle.net/fDmWH/3/

回答

1

12 months 
2 weeks 
5 days 

例如它在做什么,你问它做什么。你需要用你刚刚得到的数字来减少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 '); 
+0

喜asken感谢您的答复,但试图从你的代码我仍然得到同样的输出http://jsfiddle.net/fDmWH/5/12个月53周369天 – user1503606

+0

耶。你必须重新写一下。它只是伪代码,这意味着它只显示如何做到这一点,而不一定是它的工作原理......在这种情况下它不会。我会检查小提琴并改变它,以便它工作。 – Asken

+0

更新了小提琴http://jsfiddle.net/fDmWH/6/。尽管这一刻似乎存在问题。我期待0周,因为它只有4天,但瞬间说1。 – Asken