工作中遇到任何关于时间的代码,都可以利用momentjs来写
中文网: http://momentjs.cn/
要获取两个时刻之间的差值的时长,则可以将
diff
作为参数传给
moment#duration
。
支持的度量有
years
、
months
、
weeks
、
days
、
hours
、
minutes
和
seconds
。 为了便于开发,从 2.0.0 版本开始支持单数形式。 1.1.1 版本中提供了毫秒以外的度量单位。
默认情况下,
moment#diff
会将结果截断为零个小数位,并返回一个整数。 如果需要浮点数,则将
true
作为第三个参数传入。 在 2.0.0 之前,
moment#diff
返回的数字会四舍五入到最接近的整数,而不是截断的数字。
支持多种日期格式
moment().diff(Moment|String|Number|Date|Array);
moment().diff(Moment|String|Number|Date|Array, String);
moment().diff(Moment|String|Number|Date|Array, String, Boolean);
var a = moment([2008, 9]);
var b = moment([2007, 0]);
a.diff(b, 'years'); // 1
a.diff(b, 'years', true); // 1.75
差几个月
a.diff(b, 'months');
差几个星期
a.diff(b, 'weeks');
差几天
a.diff(b, 'days');
差几个小时
a.diff(b, 'hours');
也可以通过差的分钟数/60算出差的小时数
let diff_minutes = a.diff(b, 'minutes');
diff_minutes/60
如果该时刻早于传给 moment.fn.diff 的时刻,则返回值为负数。
var a = moment();
var b = moment().add(1, 'seconds');
a.diff(b) // -1000
b.diff(a) // 1000
这种负数的情况可以使用 Math.abs(x) 计算绝对值
月份和年份的差异
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 还支持季度单位。