2012-11-15 193 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