在我的javascript项目中,我想检查时差是否小于1秒。我用时刻来获得这种差异。这是我为实现它而编写的功能。
const withinOneSecond = (time) => {
const currentTime = moment();
return time + 1000 < currentTime;
};
但这并没有按预期工作。如何检查给定时间是否在当前时间的一秒内?
您可以使用moment#diff
. 例如,我在日期中添加了一秒,并将.diff
传递seconds
的差异作为第二个参数应该以秒为单位返回差异
var a = moment();
var b = moment().add(1, 'seconds');
console.log(b.diff(a, 'seconds'))
<script src="https://momentjs.com/downloads/moment.js"></script>
支持的测量值包括years
、months
、weeks
、days
、hours
、minutes
和seconds
。这里
对于您的特定情况,您应该执行以下操作
const withinOneSecond = (time) => {
const currentTime = moment();
return currentTime.diff(time, 'seconds') == 1
};
var time = moment().add(1, 'seconds');
let results = withinOneSecond(time);
console.log(results);
<script src="https://momentjs.com/downloads/moment.js"></script>
你不需要时间。使用原版,使用.getTime()
以毫秒为单位获取时间并将其与当前时间进行比较。请参阅下面的代码:
var date = new Date();
const withinOneSecond = (time) => new Date().getTime() - new Date(time).getTime() < 1000;
setTimeout(() => {
console.log(withinOneSecond(date)); // true
}, 500)
setTimeout(() => {
console.log(withinOneSecond(date)); // false
}, 1500)
你只需要使用 duration.asHours(( 方法(参见文档(。
const withinOneSecond = (time) => {
const currentTime = moment();
return moment.duration(currentTime.diff(time)).asSeconds() > 1;
};