时刻日期差异无效

时间:2017-09-25 14:52:35

标签: momentjs

我正在尝试使用时刻做日期差异,但它显示不正确的日期数字

var before = moment('25-Sep-2017 13:44','DD-MMM-YYYY HH:mm');
var now = moment('25-Sep-2017 13:46','DD-MMM-YYYY HH:mm');

console.log(
  moment(now - before)
  .format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]')
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>

1 个答案:

答案 0 :(得分:1)

使用片刻diff计算两个时刻对象之间的差异,而不是-,因此您将now.diff(before)而不是moment(now - before)

然后,您可以使用moment.duration(Number);创建duration

  

Moment.js也有持续时间对象。如果将时刻定义为单个时间点,则将持续时间定义为时间长度。

您可以使用moment-duration-format插件以以下形式获取持续时间值: 'D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]' 。有关详细信息,请参阅format方法文档。

请注意,使用moment-duration-format:

  

当没有值时,会自动修剪前导令牌。

您可以使用{ trim: false }选项来停止该行为

这是一个实时样本:

&#13;
&#13;
var before = moment('25-Sep-2017 13:44','DD-MMM-YYYY HH:mm');
var now = moment('25-Sep-2017 13:46','DD-MMM-YYYY HH:mm');

console.log(
  moment.duration( now.diff(before) )
  .format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]')
);

// With trim: false
console.log(
  moment.duration( now.diff(before) )
  .format('D[ day(s)] H[ hour(s)] m[ minute(s)] s[ second(s) ago.]', { trim: false })
);
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.17.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-duration-format/1.3.0/moment-duration-format.min.js"></script>
&#13;
&#13;
&#13;