时刻的时间差不工作
问题描述:
我试图用时刻做的时间差,但它显示不正确天图时刻的时间差不工作
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>
答
使用时刻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
方法文档。
注意,使用时刻,持续时间格式:当他们有没有价值
领导令牌自动修剪。
可以使用{ trim: false }
选项停止该行为。
这里活样本:
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 })
);
<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>
'时刻(现在)为.diff(前, '分钟')'会给2,所以没有与一个错误,它可能是我将调查浏览器中的时区问题。 –