获取经过的时间(分钟)通过moment diff

19

我想计算两个时间戳之间的分钟差。

我有一个起始时间戳,格式如下:

'15:44:06'

当我想要找到经过的时间时,我会创建一个新的时间戳

var currentTimestamp = Moment(new Date()).format('HH:mm:ss');

这会返回这个

'15:42:09'

然后我尝试这样计算差异:

var duration = Moment.duration(Moment(currentTimestamp,'HH:mm:ss').diff(Moment(userTimestamp,'HH:mm:ss')));

然后尝试在几分钟内获得它

var elapsedTime = duration().asMinutes();
console.log(elapsedTime);

但是在控制台中,当我将其记录下来时,出现了这个错误

var elapsedTime = duration().asMinutes();
                  ^
TypeError: object is not a function

我大部分的代码都来自于这个stackoverflow页面


1
你不能直接使用 duration.asMinutes() 吗? - CollinD
1
正如错误提示所说,duration 是一个对象而不是函数,因此不要使用 duration(),而应该使用 duration.asMinutes() - dievardump
啊,是的,小疏忽了,谢谢大家,我看了好几遍都没注意到。 - Jordan
3个回答

16

通过正确使用moment构造函数,您可以获取差异。

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

var timestamp = moment('15:44:06','HH:mm:ss');

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

timestamp.diff(moment());

然后,给定的数字可以通过.asMinutes()转换为分钟(括号中的第一个数字)

如需更多信息,请阅读官方文档此处


4
moment.diff 的第二个参数是“时间单位”。例如:timestamp.diff(moment(), 'minutes')。更多信息请查看Moment - Difference - WebWanderer

15

你也可以尝试使用最新的moment.js来实现这个功能。

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

13

这个问题有些过时了,这个答案只是为了更新状态并提供一个该问题正在寻找的解决方案:

const startDate = moment();
...
elapsedDuration = moment.duration(moment().diff(startDate));
//in minutes
elapseDuration.asMinutes();
根据有关差异和以分钟为单位显示持续时间的文档请在分钟中显示。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接