Moment.js:你如何得到“四分之三”中两个日期之间的差异'

时间:2014-12-13 02:54:03

标签: javascript date momentjs

我正在尝试使用momentJS计算两个日期之间的完整财务季度数。不幸的是,我不认为那个时刻有季度差异处理。我错过了还是应该提出功能要求?

例如,使用以下代码我希望结果为1,因为整个2014年第一季度(1月1日 - 3月31日)都包含在这些日期内。

var beginDate = moment('2013 12 31');
var endDate = moment('2014 04 01');

endDate.diff(beginDate, 'quarters')
// should return 1

使用此代码,我希望结果为2,因为2014年的第一季度和第二季度都包含在内。

var beginDate = moment('2013 12 31');
var endDate = moment('2014 07 01');

endDate.diff(beginDate, 'quarters')
// should return 2

我试过了这个,但它会产生意想不到的,往往是不正确的结果。

Math.floor(endDate.diff(beginDate, 'months') / 4)

您的任何输入都表示赞赏。感谢。

2 个答案:

答案 0 :(得分:0)

这是我的尝试。我用年份和季度创建一个“复合”数字。然后相互减去这些:

var beginDate = moment("2013-Dec-31");
var endDate = moment("2014-Apr-01");

// Calculate Quarters as the year plus fractional quarter
var beginQ = beginDate.year() + (beginDate.quarters()-1) / 4;
var endQ = endDate.year() + (endDate.quarters()-1) / 4;

document.write(beginQ + "<br />");
document.write(endQ + "<br />");

document.write( (endQ - beginQ) * 4 + "<br />");
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>

答案 1 :(得分:0)

一季度有三个月月。所以,这应该有效:

Math.floor(endDate.diff(beginDate, 'months') / 3)

然而,意识到这将返回每个3个月的整个期间的数量。这可能会或可能不会与您正在考虑的四分之一的边界一致。例如,从3月到5月的这段时间将是三个月,但跨越两个不同的季度。

相关问题