【问题标题】:Get the minutes that have elapsed through moment diff通过 moment diff 获取经过的分钟数
【发布时间】:2015-12-26 03:39:57
【问题描述】:

我正在尝试获取两个时间戳之间的分钟差

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

'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

我从this stackoverflow获得了大部分代码

【问题讨论】:

  • 你能不能不这样做duration.asMinutes()
  • duration.asMinutes() 正如错误所说,duration 是一个对象。不是函数,不要duration()
  • 啊,是一个小小的疏忽,谢谢大家,我仔细看了好几遍。

标签: momentjs duration difference


【解决方案1】:

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

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

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

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

timestamp.diff(moment());

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

有关更多信息,您应该阅读官方文档here

【讨论】:

  • moment.diff 的第二个参数是unit of measuretimestamp.diff(moment(), 'minutes')Moment - Difference
【解决方案2】:

这个问题有点老了,这个答案只是通过问题正在寻找的解决方案来更新状态:

const startDate = moment();
...
elapsedDuration = moment.duration(moment().diff(startDate));
//in minutes
elapseDuration.asMinutes();

根据有关 diff 的文档 和display duration in minutes

【讨论】:

    【解决方案3】:

    你也可以用 lastest moment.js 试试这个

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

    【讨论】:

      猜你喜欢
      • 2015-10-20
      • 1970-01-01
      • 2016-06-23
      • 2013-05-11
      • 1970-01-01
      • 2016-11-25
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      相关资源
      最近更新 更多