-1

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

私はそれを出力しようとしています

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 に答える