LANG SELRCT

コードを書く場所についてはこちら

2017年11月23日木曜日

今日は今月の何週目の何曜日かを求める



今日が今月の何週目の何曜日であるかを出そうとした時に調べて書いたコードです


今週の土曜日の日付けを取得して
それを7で割って今月の何週目かを出し
曜日は曜日番号から取得する例です


コード.gs
function get_week_num() {
  var seven_days = "日月火水木金土";
  var today = new Date();
  var this_year = today.getYear();
  var this_month = today.getMonth() + 1; 
  var date = today.getDate();
  var day_num = today.getDay(); 
  var day = seven_days[day_num];
  var this_sunday = date - day_num;
  var this_saturday = this_sunday + 6;
  var this_week = Math.ceil(this_saturday / 7);
  var today_format = Utilities.formatDate(today, 'Asia/Tokyo', 'yyyy/MM/dd');
  var result = today_format + "は、" + this_year + "年" + this_month + "月" + this_week + "週目の" + day + "曜日";
  Logger.log(result);
}
意訳.gs
この処理は以下を実行する
曜日の一覧を用意する
現在日時を取得
年を取得
月を取得(取得した月は0始まりなので+1)
日付けを取得
曜日の番号を取得→ 0 は日曜日で 1は月曜日~ 6 は土曜日
曜日を取得(seven_days[0]は日曜日)
今日の日付から今日の曜日番号を引いて今週の日曜日の日付を取得
今週の日曜日に6を足して今週の土曜日の日付を取得
今週の土曜日の日付を7で割って余りがあれば繰り上げる(もう一週存在しているから)
todayをフォーマットする(GoogleApps Script)
取得した値を任意の文字列と結合して
ログに出す




具体例


たとえば、2017/11/23木曜日を例にすると


コードの計算はこうなる
var seven_days = "日月火水木金土";
var today = 2017/11/23
var this_year = 2017
var this_month = 11
var date = 23
var day_num = 4
var day = seven_days[4] → 木
var this_sunday = 23 - 4 → 19
var this_saturday = 19 + 6 → 25
var this_week = Math.ceil(25 / 7) → 3.57...を繰り上げると=4
var today_format = 2017/11/23
var result = 2017/11/23 + "は、" + 2017 + "年" + 11 + "月" + 4 + "週目の" + 木 + "曜日";

出力されるログは最上部の画像の通り