163

私はMoment.jsを使用して人の年齢を計算しようとしていますが、それ以外の場合は便利なfromNowメソッドが年を切り上げていることがわかりました。たとえば、今日が 2012 年 12 月 27 日で、その人の生年月日が 1978年 2 月 26 日である場合、 moment("02/26/1978", "MM/DD/YYYY").fromNow()「35 年前」が返されます。Moment.js に月数を無視させ、単に日付からの年数 (つまり 34) を返すようにするにはどうすればよいですか?

4

10 に答える 10

279

moment.js の使用は次のように簡単です。

var years = moment().diff('1981-01-01', 'years');
var days = moment().diff('1981-01-01', 'days');

追加の参照については、moment.js公式ドキュメントを参照してください。

于 2014-02-24T22:04:01.083 に答える
41

http://jsfiddle.net/xR8t5/27/

小数の値が必要ない場合:

var years = moment().diff('1981-01-01', 'years',false);
alert( years);

分数値が必要な場合:

var years = moment().diff('1981-01-01', 'years',true);
alert( years);

単位は [秒、分、時間、日、週、月、年] です。

于 2016-06-24T00:16:03.797 に答える
23

There appears to be a difference function that accepts time intervals to use as well as an option to not round the result. So, something like

Math.floor(moment(new Date()).diff(moment("02/26/1978","MM/DD/YYYY"),'years',true)))

I haven't tried this, and I'm not completely familiar with moment, but it seems like this should get what you want (without having to reset the month).

于 2012-12-27T18:01:34.687 に答える
13

両方の日付 (指定された日付と現在) の月を 1 月にリセットするとうまくいくことがわかりました。

> moment("02/26/1978", "MM/DD/YYYY").month(0).from(moment().month(0))
"34 years ago"
于 2012-12-27T16:14:30.943 に答える
11

この方法は簡単で強力です。

値は日付で、「DD-MM-YYYY」は日付のマスクです。

moment().diff(moment(value, "DD-MM-YYYY"), 'years');
于 2016-12-23T21:46:53.817 に答える