我正在尝试使用时刻做日期差异,但它显示不正确的日期数字
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 :(得分: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 }
选项来停止该行为。
这是一个实时样本:
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;