时刻的时间差不工作

问题描述:

我试图用时刻做的时间差,但它显示不正确天图时刻的时间差不工作

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>

+0

'时刻(现在)为.diff(前, '分钟')'会给2,所以没有与一个错误,它可能是我将调查浏览器中的时区问题。 –

使用时刻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>