moment().diff(Moment|String|Number|Date|Array);
moment().diff(Moment|String|Number|Date|Array, String);
moment().diff(Moment|String|Number|Date|Array, String, Boolean);
要获得以毫秒为单位的差异,请像使用 moment#from
一样使用 moment#diff
。
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b) // 86400000
要获得另一个测量单位的差异,请将该测量值作为第二个参数传递。
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b, 'days') // 1
要获得两个 moment 之间差异的持续时间,你可以将 diff
作为参数传递给 moment#duration
。 有关详细信息,请参阅 moment#duration 上的文档。
支持的测量是 years
、months
、weeks
、days
、hours
、minutes
和 seconds
。 为了便于开发,从 2.0.0 开始支持单数形式。 1.1.1 版本提供毫秒以外的测量单位。
默认情况下,moment#diff
会将结果截断为零位小数,返回一个整数。 如果你想要一个浮点数,传递 true
作为第三个参数。 在 2.0.0 之前,moment#diff
返回一个四舍五入到最接近的整数的数字,而不是截断的数字。
var a = moment([2008, 9]);
var b = moment([2007, 0]);
a.diff(b, 'years'); // 1
a.diff(b, 'years', true); // 1.75
如果这个 moment 早于你传递给 moment.fn.diff
的 moment,则返回值为负数。
var a = moment();
var b = moment().add(1, 'seconds');
a.diff(b) // -1000
b.diff(a) // 1000
想到这一点的一个简单方法是用减号运算符替换 .diff(
。
// a < b
a.diff(b) // a - b < 0
b.diff(a) // b - a > 0
moment#diff
对月份和年份的差异有一些特殊处理。 它经过优化以确保具有相同日期的两个月始终相隔一个整数。
所以 1 月 15 日到 2 月 15 日应该正好是 1 个月。
2 月 28 日到 3 月 28 日应该正好是 1 个月。
2011 年 2 月 28 日到 2012 年 2 月 28 日应该正好是 1 年。
对月份和年份差异的更改是在 2.0.0 中进行的。 从版本 2.9.0 开始,diff 还支持四分之一单位。