我正在尝试使用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)
您的任何输入都表示赞赏。感谢。
答案 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月的这段时间将是三个月,但跨越两个不同的季度。