MomentJS.diff 未返回正确的月数

MomentJS.diff is not returning the correct number of months

我从某个 API 收到这个时间戳 1580844574000,即 02/04/2020。当我 运行 下面的输出时,

moment().diff(moment(1580844574000), 'months')

我得到 1 而不是 2,考虑到今天的日期是 2020 年 4 月 2 日。我也试过了,

moment('04/02/2020').diff(moment(1580844574000), 'months') 我仍然得到 1 而不是 2。

我做错了什么吗?我整理了一个 JSFiddle,您可以在其中看到输出返回 1 而不是 2。

谢谢!

这是因为 2 月 4 日不是 4 月 2 日之前的整整 2 个月。默认情况下,Moment 会将小数位截断为 return 整数(与四舍五入相反)。从文档开始:

By default, moment#diff will truncate the result to zero decimal places, returning an integer. If you want a floating point number, pass true as the third argument. Before 2.0.0, moment#diff returned a number rounded to the nearest integer, not a truncated number.

所以传递 true 作为第三个参数也会给你小数位:

moment('04/02/2020').diff(moment(1580844574000), 'months', true)
// returns 1.9131457940991838

如果你想忽略日期部分,你可以使用 Moment 的 month() 函数并使用普通减法:

moment('04/02/2020').month() - moment(1580844574000).month()
// returns 2