使用moment.js找出2次之间的时差

时间:2017-01-21 10:25:36

标签: javascript datetime momentjs

我要求找到2次(HH:MM:SS次)格式之间的差异。

需要在几秒钟内获得差异。

var a = moment('21:04:59');
var b = moment('21:04:00');

a - b = 59 seconds 

我试过以下 它以日期时间格式为我工作,但不是单独提交时间。

var a = moment('2016-06-06T20:30:59');
var b = moment('2016-06-06T20:30:00');

console.log(a.diff(b, 'seconds')) // 59 seconds

3 个答案:

答案 0 :(得分:2)

你必须像在moment

中那样传递时间
var a = moment({
  h: 21,
  m: 04,
  s: 59
});
var b = moment({
  h: 21,
  m: 04,
  s: 00
});

<强>输出
console.log(a.diff(b, 'seconds')) // 59秒

答案 1 :(得分:0)

在核心中,moment.js不支持仅限时间的数据。即使您提供仅限时间的数据,它也会尝试将“今天”存储为日期。

但你仍然可以做到这一点。

法律途径

var a = moment('21:04:59', 'HH::mm::ss');
var b = moment('21:04:50', 'HH::mm::ss');

alert(a-b); // returns miliseconds

棘手的替代

var dummyDate = '2016-05-05T'; // any date
var a = moment(dummyDate + '21:04:59');
var b = moment(dummyDate + '21:04:00');
console.log(a.diff(b, 'seconds'))

答案 2 :(得分:0)

在将字符串解析为时刻对象时,您只需添加正确的格式( $error =""; if($count == 1) { session_register("username"); $_SESSION['username'] = $username; header("location: ../home"); }else { $error = "Your Login Name or Password is invalid"; } )。

您的代码提供了弃用警告,因为您正在尝试解析不是已知ISO 8601格式的字符串。正如documentation states

  

警告:浏览器对解析字符串的支持不一致。因为没有关于应该支持哪种格式的规范,所以在某些浏览器中有效的功能在其他浏览器中不起作用。

     

为了解析除ISO 8601字符串以外的任何其他内容的一致结果,您应该使用String + Format。

请注意,由于您未提供有关日期部分的信息,因此会创建一个包含当前日期,月份和年份的对象。

这是一个工作示例:

'HH:mm:ss'
var a = moment('21:04:59', 'HH:mm:ss');
var b = moment('21:04:00', 'HH:mm:ss');
console.log(a.diff(b, 'seconds'));

有趣的是:我前一段时间给了你一个类似的answer