getWeekdayName関数

本ページには広告が含まれています。

引数で指定した曜日番号に対応する曜日名を返します。

日付から曜日番号を取得するgetWeekday関数 (自作関数)と組み合わせて使用します。

構文
  1. UString = getWeekdayName( weekday, abbreviate, firstdayofweek )
引数
weekday (Integer)必須
曜日を表す1から7の数値。1は週の最初の曜日、7は週の最後の曜日を示しています。この値はfirstdayofweekの値に依存します。
abbreviate (Boolean = False)省略可
曜日名を省略するかを示すブール値。
firstdayofweek (Integer = 1)省略可
週の始まりの曜日を指定。省略した場合は、日曜日が1から始まる値を使用。
戻り値
曜日番号に対応する曜日名

プログラム

UWSC
//////////////////////////////////////////////////
// 【引数】
//   weekday : 曜日を表す1から7の数値。1は週の最初の曜日、7は週の最後の曜日を示しています。この値はfirstdayofweekの値に依存します。 
//   abbreviate : 曜日名を省略するかを示すブール値。 
//   firstdayofweek : 週の始まりの曜日を指定。省略した場合は、日曜日が1から始まる値を使用。 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION getWeekdayName(weekday, abbreviate = FALSE, firstdayofweek = 1)
	IFB firstdayofweek = 0 THEN
		DIM WshShell = CREATEOLEOBJ("WScript.Shell")
		firstdayofweek = WshShell.RegRead("HKEY_CURRENT_USER\Control Panel\International\iFirstDayOfWeek")   // 月:0、火:1、水:2、木:3、金:4、土:5、日:6
		firstdayofweek = (firstdayofweek + 1) MOD 7 + 1
	ENDIF
	DIM weeks[] = "日", "月", "火", "水", "木", "金", "土"
	DIM temp = arrayRotate(weeks, firstdayofweek-1)
	RESULT = temp[weekday-1] + IIF(abbreviate, "", "曜日")
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 一次元配列。参照引数。 
//   callback : コールバック関数。callback内で配列の値は「%val%」で使うことができます。 
// 【戻り値】
//   
//////////////////////////////////////////////////
PROCEDURE arrayFilter(var array[], callback)
	DIM n = 0
	DIM tmp[-1]
	FOR %val% IN array
		IFB EVAL(callback) THEN
			RESIZE(tmp, n)
			tmp[n] = %val%
			n = n + 1
		ENDIF
	NEXT
	RESIZE(array, RESIZE(tmp))
	FOR n = 0 TO RESIZE(tmp)
		array[n] = tmp[n]
	NEXT
FEND

//////////////////////////////////////////////////
// 【引数】
//   arr : 追加される配列(参照引数) 
//   tmp : 追加する配列 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arrayMerge(Var arr[], tmp[])
	FOR n = 0 TO UBound(tmp)
		arrayPush(arr, tmp[n])
	NEXT
	RESULT = UBound(arr)
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 要素を追加する配列(参照引数) 
//   values : 追加する要素をvalue1から指定 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arrayPush(var array[], value1 = EMPTY, value2 = EMPTY, value3 = EMPTY, value4 = EMPTY, value5 = EMPTY, value6 = EMPTY, value7 = EMPTY, value8 = EMPTY, value9 = EMPTY, value10 = EMPTY, value11 = EMPTY, value12 = EMPTY, value13 = EMPTY, value14 = EMPTY, value15 = EMPTY, value16 = EMPTY)
    DIM i = 1
    WHILE EVAL("value" + i) <> EMPTY
	  DIM res = RESIZE(array, UBound(array) + 1)
	  array[res] = EVAL("value" + i)
	  i = i + 1
	WEND
	RESULT = LENGTH(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 配列 
//   shift : シフトする要素数。正の数で末尾方向。負の数で先頭方向。 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arrayRotate(array[], shift)
	IF shift < 0 THEN shift = LENGTH(array) + shift
	DIM array1 = arraySlice(array, shift)
	DIM array2 = arraySlice(array, 0, shift)
	arrayMerge(array1, array2)
	RESULT = array1
FEND

//////////////////////////////////////////////////
// 【引数】
//   array : 配列 
//   offset : 配列の位置。負の値の場合、配列の後ろから 
//   length : lengthが省略された場合は末尾まで。lengthが正の数ならば、offsetからlengthの数だけ要素を取得。lengthが負の数ならば、末尾からlengthだけ切り捨てる。 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION arraySlice(array[], offset, length = NULL)
	SELECT TRUE
		CASE offset > 0
			SHIFTARRAY(array, -1 * offset)
			IF length = NULL THEN length = LENGTH(array) - offset
			RESIZE(array, length - 1)
		CASE offset < 0
			SHIFTARRAY(array, ABS(offset) - LENGTH(array))
			RESIZE(array, LENGTH(array) - ABS(offset))
			arrayFilter(array, "%val% <> EMPTY")
			IF length < 0 THEN RESIZE(array, RESIZE(array) + length)
		CASE offset = 0
			IF length = NULL THEN length = LENGTH(array)
			RESIZE(array, length - 1)
	SELEND
	RESULT = SLICE(array)
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND

//////////////////////////////////////////////////
// 【引数】
//   arrayname : 上限値を求める配列の名前 
//   dimension : 返す次元を示す整数 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION UBound(arrayname[], dimension = 1)
	RESULT = EVAL("RESIZE(arrayname" + strRepeat("[0]", dimension - 1) + ")")
FEND

週開始曜日

以下は曜日(weekday)と週開始曜日(firstdayofweek)の関係を示した表です。

曜日と週開始曜日の交差する点の値が返ります。

週開始曜日
(firstdayofweek)
曜日(weekday)
1234567
日(1)
月(2)
火(3)
水(4)
木(5)
金(6)
土(7)

使い方

曜日番号から曜日を取得

曜日番号が2の曜日名を取得します。曜日番号は日曜日が1、土曜日が7とした範囲の値が返ります。

UWSC
PRINT getWeekdayName(2)
結果
プレーンテキスト
月曜日

曜日番号から曜日を省略して取得

曜日番号が5の曜日名を取得します。abbreviateTrueを指定しているので曜日は省略されます。

UWSC
PRINT getWeekdayName(5, TRUE)
結果
プレーンテキスト

指定日の曜日を取得

2024/10/07の曜日を取得します。まずgetWeekday関数 (自作関数)で日付を曜日番号に変換してからgetWeekdayName関数で曜日名を取得します。

getWeekday関数 (自作関数)2024/10/07を指定したとき2が戻り値として返り、getWeekdayName関数の引数に2を渡すと、日曜日から数えて2番目である月曜日が返ります。

UWSC
PRINT getWeekdayName(getWeekday("2024/10/07"))
結果
プレーンテキスト
月曜日

今日の曜日を取得

今日の曜日を取得します。

UWSC
PRINT getWeekdayName(getWeekday(today()))

参考文献

  1. 曜日を取得する – Excelメモ

関連記事

getWeekday関数 (自作関数)
引数に指定された日付の曜日番号(0:日曜〜6:土曜)を返します。
getNthWeekday関数 (自作関数)
指定年月の第何何曜日(第nW曜日)の日付を返します。
GETTIME関数 (スクリプト関数)
GETTIMEは日時を取得する関数です。第二引数に指定された基準日から第一引数に指定した日数を加算した値を返します。戻値は2000年1月1日からの秒数です。関数実行後特殊変数に値がセットされ、その特殊変数から日付情報を取得できます。
getYear関数 (自作関数)
指定した日付から「年」を返します。
getMonth関数 (自作関数)
指定した日付から「月」を返します。
getDay関数 (自作関数)
指定した日付から「日」を返します。
isDate関数 (自作関数)
isDate関数は、引数が有効な日付として認識できる場合はTrue、それ以外の場合はFalseを返します。
getEndOfMonth関数 (自作関数)
getEndOfMonth関数は、date から m 月後の月末の日付を返す関数です。m は正の値で未来、負の値で過去になります。
today関数 (自作関数)
today関数は、現在の日付を返す関数です。YYYY/MM/DD形式で返されます。時刻も含めて取得する場合はnow関数を使います。
now関数 (自作関数)
now関数は、現在の日時を取得する関数です。日付のみ取得したい場合は、today関数を使います。