获取经过时差的分钟数

Jor*_*dan 12 duration momentjs difference

我试图在两个时间戳之间获得分钟差异

我有一个看起来像这样的时间戳

'15:44:06'
Run Code Online (Sandbox Code Playgroud)

当我想找到时间流逝时,我会创建一个新的时刻时间戳

var currentTimestamp = Moment(new Date()).format('HH:mm:ss');
Run Code Online (Sandbox Code Playgroud)

哪个回来了

'15:42:09'
Run Code Online (Sandbox Code Playgroud)

然后,我试图得到这样的差异

var duration = Moment.duration(Moment(currentTimestamp,'HH:mm:ss').diff(Moment(userTimestamp,'HH:mm:ss')));
Run Code Online (Sandbox Code Playgroud)

然后尝试在几分钟内完成它

var elapsedTime = duration().asMinutes();
console.log(elapsedTime);
Run Code Online (Sandbox Code Playgroud)

但是在我登录时在控制台中我得到了这个错误

var elapsedTime = duration().asMinutes();
                  ^
TypeError: object is not a function
Run Code Online (Sandbox Code Playgroud)

我从这个stackoverflow获得了大部分代码

Sah*_*avi 14

您可以通过正确使用矩构造函数来获取差异.

首先,初始化时间戳时,应使用以下格式:

var timestamp = moment('15:44:06','HH:mm:ss');
Run Code Online (Sandbox Code Playgroud)

其次,当你想使用当前时间的diff函数时,你应该像这样使用它:

timestamp.diff(moment());
Run Code Online (Sandbox Code Playgroud)

然后,使用.asMinutes()(第一个)将给定的数字转换为分钟

有关详细信息,请阅读此处的官方文档.

  • `moment.diff`的第二个参数是`度量单位`.`timestamp.diff(moment(),'minutes')`.[时刻 - 差异](http://momentjs.com/docs/#/displaying/difference/) (4认同)

Cus*_*dio 8

这个问题有点老了,这个答案只是使状态与问题正在寻找的解决方案保持同步:

const startDate = moment();
...
elapsedDuration = moment.duration(moment().diff(startDate));
//in minutes
elapseDuration.asMinutes();
Run Code Online (Sandbox Code Playgroud)

根据有关差异显示持续时间(以分钟为单位)的文档


Raj*_*rma 6

您还可以尝试使用最新的moment.js

var start = moment('15:44:06','HH:mm:ss');
var minutesPassed = moment().diff(start, 'minutes');
Run Code Online (Sandbox Code Playgroud)