我希望比较两个日期的月份和天数。我无法访问从moment.js返回的对象的属性。
我似乎无法访问Duration._data对象的属性。
var x = moment(); //todays date
var y = moment("2015-12-1"); // an earlier date
var duration = moment.duration(x.diff(y));
console.log("diff: ", duration);
返回:
diff:
Duration {_isValid: true, _milliseconds: 106742243043, _days: 0, _months: 0, _data: {…}, …}
_data:
days: 17
hours: 10
milliseconds: 43
minutes: 37
months: 4
seconds: 23
years: 3
希望通过使用duration._data.days获得月和日道具。但是我收到错误消息:
类型“持续时间”中不存在属性“ _data”
答案 0 :(得分:1)
使用range
,卢克:
var x = moment(); //todays date
var y = moment("2015-12-1"); // an earlier date
var duration = moment.duration(x.diff(y));
const range = moment.range(y, x);
const days = range.diff('days');
console.log("diff: ", days); // gives the number of days
答案 1 :(得分:1)
您可以简单地使用持续时间设置器,例如months()
,days()
等
这里有一个现场样本:
var x = moment(); //todays date
var y = moment("2015-12-1", 'YYYY-M-D'); // an earlier date
var duration = moment.duration(x.diff(y));
console.log("diff: ", duration.months(), duration.days());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
如果要向持续时间添加format()
方法,请查看moment-duration-format插件。
答案 2 :(得分:0)
var a = moment(); //todays date
var b = moment("2015-12-1"); // an earlier date
var years = a.diff(b, 'year');
b.add(years, 'years');
var months = a.diff(b, 'months');
b.add(months, 'months');
var days = a.diff(b, 'days');
console.log(years + ' years ' + months + ' months ' + days + ' days');
答案 3 :(得分:0)
我总是使用此功能来获取日期之间的差异。
const availableTime = moment(endDate);
const timeDifference = availableTime.diff(moment(startDate));
return moment.duration(timeDifference);
然后,您可以:
duration.days()
duration.minutes()
等等。