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>
ここでフォーマットを指定する必要があります。そうでなければ、瞬間はYYYY-MM-DDかYYYY-DD-MMかどうかをどのように知っていますか? – axlj
@axlj指定されていない場合、momentjsは[YYYY-MM-DD]である[ISO 8601標準](https://momentjs.com/docs/#supported-iso-8601-strings)に戻ります。 – Terry