JavascriptのDateで指定期間の年月(yyyymm)をひとつずつ取得
たとえば、2013年12月から2014年2月までの期間だと、
[201312,201401,201402]
って感じで配列で取得したい!
startとendはDateオブジェクトの想定ですが日にちが何日かわからないので、その月の初日にセットするため再度newしてます。
var format_ym = function(start, end){ var i = new Date(start.getFullYear(), start.getMonth(), 1, 0, 0, 0); var end_time = new Date(end.getFullYear(), end.getMonth(), 1, 0, 0, 0).getTime(); var ym_format = function(d){ return d.getFullYear()+((('0'+(d.getMonth()+1)).slice(-2))); }; var ym_array = []; for(; i.getTime() <= end_time; i = new Date(i.getFullYear(), i.getMonth()+1, 1, 0, 0, 0)){ ym_array.push(ym_format(i)); } return ym_array; };
forでiをDateオブジェクトにして回せるかなっと思ったら回せました。
ただ毎回newしてるのでパフォーマンスは悪いと思いますね・・・
期間が長くなるときはおすすめしません。
私の場合は期間が最大3ヶ月だったのでこれでやっちゃいました。
もっとスマートなやり方あったら教えてください。
PHPのdate関数が恋しくなりました。