2012-12-26 40 views

回答

33

這現在支持的時刻。一樣容易:

moment('2014-12-01').utc().quarter() //outputs 4 
moment().quarter(); //outputs current quarter ie. 2 
+4

對於那些希望獲得實際日期的人:http://stackoverflow.com/review/suggested-edits/14927736 –

1

沒有什麼現在建立,但有談話爲宿舍添加格式化令牌。 https://github.com/timrwood/moment/pull/540

在此期間,您可以使用類似下面的內容。

Math.floor(moment().month()/3) + 1; 

或者,如果你想在原型的原型上做到這一點。

moment.fn.quarter = function() { 
    return Math.floor(this.month()/3) + 1; 
} 
+0

嗯...根據我們現在在第三季度:地板(11/4)+ 1 –

+0

我在看https://github.com/adjohnson916/moment/commit/3540e180589c010eedbe604707f794b59c77ef86,它使用公式'return ~~((this.month())/ 3)+ 1;'。 ~~是什麼意思?編輯:Nvm想通了它的地板。 –

+0

啊,是的,應該是'月/ 3'。 – timrwood

1

,似乎爲我工作的公式是:

Math.ceil((moment().month() + 1)/3); 

時刻()月()還給了0-11個月的格式,所以我們需要增加一個

THE ACTUAL MONTH = (moment().month() + 1) 

那麼我們必須除以3,因爲一個季度有3個月。

HOW MANY QUARTERS PASSED = (THE ACTUAL MONTH)/3 

,然後我們必須拿到的上限(四捨五入到最接近的季度末)

CEILING(HOW MANY QUARTERS PASSED) 

編輯:

Official formula(尚未COMMITED)是:

~~((this.month())/3) + 1; 

這意味着Math.floor((this.month())/3) + 1;

0

的simplist方式做,這是

Math.floor(moment.month()/3) 

這會給你一個從零開始的季度指數。即0,1,2或3.

然後,如果您想要季度的文字數字,只需添加一個。

4

使用這個簡單的代碼來獲得一月和四月

Demo

基於代碼的所有季度:

// startMonth should be january or april 

    function setQuarter(startMonth) { 
    var obj = {}; 
    if(startMonth=='january'){ 

     obj.quarter1 = {start:moment().month(0).startOf('month'),end:moment().month(2).endOf('month')} 
     obj.quarter2 = {start:moment().month(3).startOf('month'),end:moment().month(5).endOf('month')} 
     obj.quarter3 = {start:moment().month(6).startOf('month'),end:moment().month(8).endOf('month')} 
     obj.quarter4 = {start:moment().month(9).startOf('month'),end:moment().month(11).endOf('month')} 
     console.log(obj); 
     return obj; 
    } 
    else if(startMonth=='april'){ 

     obj.quarter1 = {start:moment().month(3).startOf('month'),end:moment().month(5).endOf('month')} 
     obj.quarter2 = {start:moment().month(6).startOf('month'),end:moment().month(8).endOf('month')} 
     obj.quarter3 = {start:moment().month(9).startOf('month'),end:moment().month(11).endOf('month')} 
     obj.quarter4 = {start:moment().month(0).startOf('month').add('years',1),end:moment().month(2).endOf('month').add('years',1)} 
     console.log(obj); 
     return obj; 
    } 
} 

setQuarter('april'); 

Fiddle

3

使用版本2.14.1+你可以做類似如下:

moment().quarter()返回當前季度數字:1,2,3,4

moment().quarter(moment().quarter()).startOf('quarter'); 

將返回當前季度,並將日期設置爲季度開始日期。

moment().quarter(moment().quarter()).startOf('quarter'); 

會返回當前季度,並將日期設置爲季度結束日期。

您也可以定義一個函數,將相應的季度數作爲參數(1,2,3,4),並返回一個包含該季度開始和結束日期的對象。

function getQuarterRange(quarter) { 

    const start = moment().quarter(quarter).startOf('quarter'); 

    const end = moment().quarter(quarter).endOf('quarter'); 

    return {start, end}; 
} 
0

我不認爲任何這些答案解釋如何獲得財政季度。他們解釋如何獲得日曆季度。

我沒有一個乾淨的答案,因爲這是什麼讓我在這裏。但財政季度是真正想要的。這是基於財年的開始月份。

例如,如果我公司的財政開始月份是二月。然後在編寫本2017年1月9日時,我實際上是在2016年第四季度。

爲了實現這一點,我們需要一種方法來獲取季度相對於提供的開始月份的整數。

相關問題