【发布时间】:2019-02-21 04:53:38
【问题描述】:
如何使用 moment.js 获取两个不同日期变量之间的时差,特别是年、月和日?
我找到了这种方法,但我不断得到奇怪的结果。有时结果提前一个月,所以我添加了一个减去一个月的部分以使结果正确,但是当两个日期之间的差异可以分为整年时,它就会落后一个月,但是如果我删除了减去月份部分,它变得更加不正常。
我也想将其格式化为“X年,Y月,Z天”,但也不知道如何以这种方式格式化。
var dateOne = new Date(2000,07,16);
var dateTwo = new Date (1990,07,16);
var updatedDate = moment(dateOne).format('ll');
var x = moment(dateOne, 'DD/MM/YYYY').diff(moment(dateTwo, 'DD/MM/YYYY'))
var y = moment.duration(x);
var why = moment(x).subtract(1, 'M');
var z = Math.floor(y.asYears()) + moment.utc(why).format('/MM/DD');
console.log(z);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
【问题讨论】:
-
相关answer
-
你在做一些奇怪的事情。一方面,日期和持续时间是完全不同的东西,您不能将持续时间格式化为日期。另一方面,这两者之间的差异正好是 10 年:
moment(dateOne).diff(dateTwo, 'years', true) -
没有理由包含 jQuery。 dateOne 是一个 Date 对象,因此不需要
moment(dateOne, 'DD/MM/YYYY')中的第二个参数。您可以使用 CDN 将 moment.js 作为外部库包含在内,例如https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js
标签: javascript date momentjs date-difference