Ole*_*eit 25 javascript date momentjs
我正在寻找一种方法来使用momentjs来解析两个日期,以显示差异.
我想把它放在格式上:"X年,Y月,Z天".
几年和几个月,库和模运算符的工作很好.但是对于那些日子来说这是另一个故事,因为我不想处理闰年和我自己的所有这些.到目前为止,我脑子里的逻辑是这样的:
var a = moment([2015, 11, 29]);
var b = moment([2007, 06, 27]);
var years = a.diff(b, 'years');
var months = a.diff(b, 'months') % 12;
var days = a.diff(b, 'days');
// Abit stuck here as leap years, and difference in number of days in months.
// And a.diff(b, 'days') returns total number of days.
return years + '' + months + '' + days;
Run Code Online (Sandbox Code Playgroud)
Jos*_*ier 38
您可以获得多年的差异并将其添加到初始日期; 然后在几个月内得到差异并再次将其添加到初始日期.
通过这样做,您现在可以轻松获得天数差异,并避免使用模数运算符.
var a = moment([2015, 11, 29]);
var b = moment([2007, 06, 27]);
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');
// 8 years 5 months 2 days
Run Code Online (Sandbox Code Playgroud)
我不知道有更好的,内置的方法来实现这一点,但这种方法似乎运作良好.
Kun*_*dia 28
Moment.js也有duration对象.一个时刻被定义为单个时间点,而持续时间被定义为基本上你想要的时间长度.
var a = moment([2015, 11, 29]);
var b = moment([2007, 06, 27]);
var diffDuration = moment.duration(a.diff(b));
console.log(diffDuration.years()); // 8 years
console.log(diffDuration.months()); // 5 months
console.log(diffDuration.days()); // 2 days
Run Code Online (Sandbox Code Playgroud)
@Josh建议可能会起作用,但绝对不是在2个时刻计算差异的正确方法.