2014-12-13 94 views
0

我正在嘗試使用momentJS來計算兩個日期之間的完整財務季度的數量。不幸的是,我不認爲那一刻有季度差異處理。我錯過了它還是應該提出功能要求?Moment.js:你如何得到'宿舍'中兩個日期之間的差異

例如,使用以下代碼,我預計結果爲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

as27 - 請告知我的解決方案是否有效。謝謝! – 2014-12-15 20:52:59

回答

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>

0

有在一季度末個月。所以,這應該工作:

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

但是,實現這個將返回每個整個3個月的數量。這可能會也可能不符合您正在考慮的四分之一的界限。例如,從三月到五月的時間將是三個月,但跨越兩個不同的季度。