如何解析moment.js日期对象

时间:2019-04-19 19:10:17

标签: javascript momentjs

我希望比较两个日期的月份和天数。我无法访问从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”

4 个答案:

答案 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()

等等。