-1

我正在尝试了解 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/

4

1 回答 1

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 ');
于 2012-11-15T10:53:14.967 回答