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
我从某个 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