在此示例中,为什么我无法使用moment js计算日期时间差?

时间:2019-06-03 19:02:59

标签: javascript momentjs

我正在尝试计算开始和结束之间的时间差。

使用moment.js的片段

cleanStartTime = i.time_start
cleanStartTime = moment(cleanStartTime).format('LLL')
cleanEndTime = i.time_end
cleanEndTime = moment(cleanEndTime).format('LLL')
theDuration = moment.duration(cleanStartTime.diff(cleanEndTime)).humanize()
console.log(theDuration)

错误:

TypeError: cleanStartTime.diff is not a function

cleanStartTime看起来像是2018年5月7日下午5:51

2 个答案:

答案 0 :(得分:2)

您正在将矩对象格式化为字符串,然后尝试使用原始矩对象中的方法。如果您看一个简单的例子

.mycard span {
  position: absolute;
  display: none;
  z-index: 99;
}

.mycard:hover span {
  display: block;
  position: fixed;
  overflow: hidden;
}

.imgHover a {
  position: relative;
}

.imgHover span {
  position: absolute;
  display: none;
  z-index: 99;
}

.imgHover a:hover span {
  display: block;
  position: fixed;
  overflow: hidden;
}

给予

<div class="imgHover mycard">
  <div class="cardcost">
    <p class="cardcosttext">2</p>
  </div>
  <div class="hscardepic">
    <a style="margin-left: 1000%;vertical-align: middle;">
      Doomsayer
      <span id="moveHover">
        <img src="Classic_Set/doomsayer.png" height="300" width="300" /> 
      </span>
    </a>
  </div>
  <div class="cardamount">
    <p class="cardamounttext">&times;2</p>
  </div>
</div>

这是一个字符串,因此没有您尝试使用的diff方法defined。在完成所有操作(或根本不执行)之后格式化字符串应该可以解决您的问题。例如。

moment().format('LLL')

给出我怀疑您最初正在寻找的东西

"June 3, 2019 12:06 PM"

答案 1 :(得分:0)

如果尝试使用moment(cleanStartTime).diff(cleanEndTime)而不是cleanStartTime.diff(cleanEndTime),该错误应会消失。