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