Moment.js时间差值计算报错:字符串无法调用subtract方法的解决
正确计算Moment时间对象差值的方法
错误原因
你调用format()之后,one和two已经变成了字符串类型,而字符串没有subtract方法,这就是报错的根源。ones和twos本身是Moment实例,直接对它们操作就行,不用先转成字符串。
正确实现方式
Moment提供了专门计算时间差的diff()方法,直接用它来计算两个Moment对象的差值即可,支持指定差值的单位(毫秒、天、小时等):
示例代码
// ones和twos是已处理好的Moment实例,无需转字符串 // 计算毫秒级差值(默认单位) const diffMs = ones.diff(twos); // 计算天数差值 const diffDays = ones.diff(twos, 'days'); // 计算小时差值,保留小数 const diffHours = ones.diff(twos, 'hours', true); // 如果要用subtract(得到的是一个新的Moment对象,不是差值) // 比如得到 ones 减去 twos 后的时间点,而非差值 const subtractedMoment = ones.clone().subtract(twos);
说明
diff()的第一个参数是要对比的Moment对象,第二个参数是可选的单位(如'days'、'hours'、'minutes'等),第三个参数设为true可以返回小数结果。- 如果要用
subtract,注意要调用clone()避免修改原Moment对象,而且subtract返回的是调整后的Moment实例,不是两个时间的差值,所以计算差值优先用diff()。
内容的提问来源于stack exchange,提问作者ssksksks
相关产品推荐
相关产品推荐

