之前写的代码,测试过了上线很长时间了,这两天发现不好使了。发现返回的值就变成了NaN。。。
例子 也是按照moment.js官网给的例子写的,把字符串变成时间数组格式,真是奇了怪了。
原来的代码
const separator = /-|:|\s/g;
let failureBegin = "2023-12-12 12:00:00"
let failureEnd = "2023-12-12 12:00:04"
let faultLast = 0;
let start = moment(failureBegin.split(separator));
let end = moment(failureEnd.split(separator));
faultLast = end.diff(start, "seconds");
原因
网上搜索了一下,这个问题的解释是:
当使用一个数字数组创建日期时,月份从零开始,该数组反映了传递给new Date()的参数。所以用12表示月份是无效的。 当前月正好是12月份。。
然后看有人说把数组变成字符串,这样?2023,12,12,12,0,0
试了不行。
最终解决方案:
最终试了把时间字符串变成一个moment对象,diff方法里的参数变成moment对象。像这样:(当然也可以把时间字符串都变成时间戳,两者相减计算出时间差)
let failureBegin = "2023-12-12 12:00:00"
let failureEnd = "2023-12-12 12:00:04"
let faultLast = 0;
let start = moment(failureBegin);
let end = moment(failureEnd);
faultLast = end.diff(start, "seconds");
发现就好使了!!!