現在の会計四半期を把握するための簡単な/組み込みの方法はありますか?
元:
- 1月~3月:1日
- 4月~7月:2日
- 7月~9月:3日
- 10月~12月:4日
現在の会計四半期を把握するための簡単な/組み込みの方法はありますか?
元:
これはすぐにサポートされるようになりました:
moment('2014-12-01').utc().quarter() //outputs 4
moment().quarter(); //outputs current quarter ie. 2
この単純なコードを使用して、1 月と 4 月に基づいてすべての四半期を取得します。
コード :
// 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');
開始日
moment().quarter(moment().quarter()).startOf('quarter');
日付を四半期の開始日に設定して、現在の四半期を返します。
moment("2019", "YYYY").quarter(4).startOf('quarter');
年の第 4 四半期「2019」の開始日を返します。
moment().startOf('quarter');
現在の年の現在の四半期の開始日を返します。
終了日
moment().quarter(moment().quarter()).endOf('quarter');
四半期の終了日に設定された日付で現在の四半期を返します。
moment("2019", "YYYY").quarter(4).endOf('quarter');
年の第 4 四半期「2019」の終了日を返します。
moment().endOf('quarter');
現在の年の現在の四半期の終了日を返します。
これらの回答のいずれも、財務四半期を取得する方法を説明しているとは思いません。彼らは暦四半期を取得する方法を説明します。
それが私をここに導いたので、私には明確な答えがありません。しかし、本当に求められているのは会計四半期です。そして、それは会計年度の開始月に基づいています。
たとえば、私の会社の会計開始月が 2 月であるとします。そして、2017 年 1 月 9 日の執筆時点で、私は実際には 2016 年第 4 四半期にいます。
これを達成するには、開始月の提供された整数に関連する四半期を取得する方法が必要です。
現在、何も組み込まれていませんが、四半期のフォーマットトークンを追加するための会話があります。https://github.com/timrwood/moment/pull/540
それまでの間、次のようなものを使用できます。
Math.floor(moment().month() / 3) + 1;
または、現時点でプロトタイプが必要な場合は、これを実行します。
moment.fn.quarter = function () {
return Math.floor(this.month() / 3) + 1;
}
私にとってうまくいくと思われる式は次のとおりです。
Math.ceil((moment().month() + 1) / 3);
moment().month() は 0 ~ 11 の月の形式を返すため、追加する必要があります
THE ACTUAL MONTH = (moment().month() + 1)
四半期は 3 か月なので、3 で割る必要があります。
HOW MANY QUARTERS PASSED = (THE ACTUAL MONTH) / 3
そして、その上限を取得する必要があります(最も近い四半期の終わりに丸めます)
CEILING(HOW MANY QUARTERS PASSED)
編集:
公式の式(まだコミットされていません) は次のとおりです。
~~((this.month()) / 3) + 1;
つまりMath.floor((this.month()) / 3) + 1;
これを行う最も簡単な方法は
Math.floor(moment.month() / 3)
これにより、ゼロベースの四半期インデックスが得られます。つまり、0、1、2、または 3 です。
次に、四半期のリテラル番号が必要な場合は、1 を追加します。