Thursday, March 01, 2012

Javascriptで年初からの日数/週数を取得する

Javascriptで年初からの日数と週数を数えるメソッドをDateクラスに追加する。週数の方は、日曜を起点とした週数を数える(Rubyの%Uに相当)。

Date.prototype.getDayOfYear = function() {
  var onejan = new Date(this.getFullYear(), 0, 1);
  return Math.ceil((this - onejan) / 86400000);
};

Date.prototype.getWeekOfYear = function() {
  var onejan = new Date(this.getFullYear(), 0, 1);
  var offset = onejan.getDay() - 1;
  var weeks = Math.floor((this.getDayOfYear() + offset) / 7);
  return (onejan.getDay() == 0) ? weeks + 1 : weeks;
};
使い方は:
var time = Date.now();
var today = new Date(time); // Fri Mar 02 2012 16:49:11 GMT+0900 (JST)
today.getDayOfYear(); // => 62
today.getWeekOfYear(); // => 9

参考