渡したDateが第何何曜日かを取得する一行スクリプト

今回は仕事で書いた、ちょっとしたスクリプトをご紹介してみたいと思います。


いきなりですが、申し訳ありません。
実は関数定義を入れると三行のスクリプトとなっております…(´・ω・`)
一行の響きに釣られた方はすみません、三行でも良いよって方は続きをご覧下さい。

渡したDateが第何何曜日かを取得するスクリプト

function getDayAndCount(date){
  return {day: date.getDay(), count: Math.floor((date.getDate() - 1) / 7) + 1};
}

このスクリプトは仕事でwebカレンダーの休日対応を頼まれた際に「水曜と第2、第4火曜は定休日にして欲しい」みたいな事を言われた時に作ったスクリプトです。

dayに曜日が、countに第何番目かを示す値が入ったオブジェクトを返します。

具体的な使い方として
Datepicker for Bootstrap
のbeforeShowDayを使った方法をご紹介します。

function checkHoliday(check_date){
  function getDayAndCount(date){
    return {day: date.getDay(), count: Math.floor((date.getDate() - 1) / 7) + 1};
  }
  var counted_day = getDayAndCount(check_date);

  // [日, 月, 火, 水, 木, 金, 土]の順に第何番目が休日かを設定します。-1だと全て休日です。
  var holidays = [[null], [null], [2, 4], [-1], [null], [null], [null]];

  var re;
  if(holidays[counted_day.day][0] == -1){
    re = false
  }
  else if(holidays[counted_day.day].indexOf(counted_day.count) != -1){
    re = false; 
  }
  else{
    re = true; 
  }
  
  return re
}

上記のスクリプトをbeforeShowDayのオプションに噛ませて下さい。スクリプト内で指定された第何何曜日をdisabledにする事が出来ます。

決まった曜日を全て休日にするならdaysOfWeekDisabledを使用しても良いのですが、お客さんがjavascriptに余り慣れて居ない方だったので、一箇所で設定出来た方が良いかなと思い「-1は全て休日」の仕様を設けました。

いかがでしょうか?

「一行(関数定義込みだと三行)で渡したDateが第何何曜日かを取得するスクリプト」よろしければ是非お使い下さい。

ではではー。(`・ω・´)ノシ