2016-08-24 12 views

答えて

5

ここMoment.jsを使用してソリューションです:

const moment = require('moment'); 

let fmt  = '[q]Q-Y'; 
let quarters = [ 
    moment().format(fmt), 
    moment().subtract(1, 'Q').format(fmt), 
    moment().subtract(2, 'Q').format(fmt), 
    moment().subtract(3, 'Q').format(fmt) 
]; 
// quarters = [ 'q3-2016', 'q2-2016', 'q1-2016', 'q4-2015' ] 

以上の簡潔なバージョン:

let quarters = [ 0, 1, 2, 3 ].map(i => 
    moment().subtract(i, 'Q').format('[q]Q-Y') 
) 
1

のように四方を返す必要があります例えば、現在の四半期および年間一緒に前の四分の三を取得する方法があります

var d = new Date();//current date 
 
    var y = d.getFullYear();//year as 4 digit number 
 
    var m = d.getMonth();//0 to 11 which actually is helpful here 
 
    var q = Math.floor(m/3) + 1;//month div 3 + 1 
 
    var s = "";//this holds the result 
 
    for (var i = 0; i < 4; i++) { 
 
     s += "q" + q + "-" + y; 
 
     if (i < 3) { 
 
      s += " ";//another entry coming so put in space 
 
      q--;//and roll back quarter 
 
     } 
 
     if (q == 0) { 
 
      q = 4;//we were in q1 so predecessor is q4 
 
      y--;//and the year is one less 
 
     } 
 
    }; 
 
console.log(s);

+1

コードを実行可能スニペットとして投稿することを検討してください。 – RobG

+0

ありがとう@RobG。私は新しいことを学びました。あなたの提案ごとにコードを編集しました。 –

0

あなたは暦四半期たいと仮定その後、ジェレミーの作品のようなアプローチ(すなわちQ1を3月-1月6月に包括的、Q2 4月を含め、などがあります)。以下は似ていますが、いくつかの配列メソッドでちょっと創造的です。

"quarter"という別の定義がある場合(例:Jul-Sepを含む場合は財務上、Apr-Junの場合は前年度のQ4)、qという初期値を設定します。

function getQuarters() { 
 
    var d = new Date().toISOString().split('-').splice(0,2); 
 
    var q = Math.ceil(d[1]/3); 
 
    return new Array(4).fill(null).reduce(function(acc, v,i, arr) { 
 
    arr[i] = 'q' + q + '-' + d[0]; 
 
    d[0] -= q==1? 1 : 0; 
 
    q -= q > 1? 1 : -3; 
 
    return arr; 
 
    }, null); 
 
} 
 

 
console.log(getQuarters())

関連する問題