2017-08-14 5 views
1

私は2つの日付の間の月に違いを得るためにライブラリmoment.jsと働いています..コードはうまく動作します。しかし、これは同じ日に一ヶ月かかるdate = 2017-08-14、second Date = 2017-09-14 ...この場合にのみ、1か月分を考慮に入れて、今度は私の質問が2番目の日付が:2017-09-12私はすでに月のように考慮する?moment.jsの日付を比較します

私は少しコードを残します。

var date1 = moment('2017-08-14'); 
 
var date2 = moment('2017-09-12'); 
 
var result = date2.diff(date1, 'months'); 
 
console.log(result);
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

+0

ここでフォーマットを指定する必要があります。そうでなければ、瞬間はYYYY-MM-DDかYYYY-DD-MMかどうかをどのように知っていますか? – axlj

+2

@axlj指定されていない場合、momentjsは[YYYY-MM-DD]である[ISO 8601標準](https://momentjs.com/docs/#supported-iso-8601-strings)に戻ります。 – Terry

答えて

3

According to the documentation.diff()(< 1が0に切り捨てされ、すなわち正の値)の値が正の場合切り捨て、その値が負である場合に切り上げます

デフォルトでは、#diffはゼロに丸められた数値を返します(正の場合は下がり、負の場合は上)。浮動小数点数が必要な場合は、3番目の引数としてtrueを渡します。

あなたは浮動小数点数をしたい場合は、単にこれを実行します。

var result = date2.diff(date1, 'months', true); 

をそして、あなたはあなた自身の丸めアップ/ダウンの好みを適用することができます。あなたは、最寄り月、使用に丸めるしたい場合は、次の関連ノートで

var result = Math.round(date2.diff(date1, 'months', true)); 

var date1 = moment('2017-08-14'); 
 
var date2 = moment('2017-09-12'); 
 
var result = date2.diff(date1, 'months', true); 
 
console.log(result);
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

あなたは場合、月の境界を検出したい場合は、2つの日付の間横切った (たとえば、2017年8月31日対2017年9月1日を月が8月から9月に変更されるため、1月の差としてカウントする必要がある場合)、.month()を使用して日付からその月を抽出して差額を計算することができます。

var date1 = moment('2017-08-31'); 
 
var date2 = moment('2017-09-01'); 
 
var result = date2.month() - date1.month(); 
 
console.log(result);
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

0

だけで、moment.jsマニュアルに従っている、機能(true)への追加の引数を提供します。デフォルトでは

moment#diffを向けて丸めた数値を返します。ゼロ(正の場合は下、負の場合は上)。浮動小数点数が必要な場合は、第3引数としてtrueを渡します。 2.0.0より前では、moment#diffは、ゼロに丸められた丸められた数値ではなく、最も近い数値に丸められた数値を返しました。

var date1 = moment('2017-08-14'); 
 
var date2 = moment('2017-09-12'); 
 
var result = date2.diff(date1, 'months', true); 
 
console.log(result);
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

0

これらのソリューションの多くは良いです。あなたが素敵なラウンドの整数をしたい場合は、実行してみてください:

var date1 = moment('2017-08-14').month(); 
var date2 = moment('2017-09-12').month(); 
var monthDiff = Math.abs(date1-date2); 
console.log(monthDiff); 

テリーは同様のソリューションを設置しているが、これは厄介な負の数を取り除きます。また、不必要な小数点を簡単に整理します。