[Delphi]DayOfWeekなど日付から曜日を表示


※全てのDelphiで動作する保証はありません。また、内容に関し管理人は全ての責任を負いかねます

サンプル ※説明に必要な部分しか記述していません。

 

サンプルでは2つの関数を使用しどちらも曜日を示す数字を返しますが日曜始まりと月曜始まりの違いがあります。下記はヘルプからの引用です。

SysUtils.DayOfWeek

指定された日付の曜日を 1 ~ 7 の整数で返します。日曜が週の先頭で,土曜が 7 番めの曜日です。

DateUtils.DayOfTheWeek

指定された TDateTime 値で表された曜日を取得できます。DayOfTheWeek は,1 ~ 7 の範囲の値を返します。1 は月曜,7 は日曜を示します。


Delphiで日本語の曜日を返すにはFormatDateTime関数を使うと一番ラクだと思われます。

一方、DayOfWeek / DayOfTheWeekの戻り値は曜日の数値しか戻ってこないので、このサンプルではcase文 / 配列を使っていますが、その他の方法も考えられます。あからじめご了承下さい。

procedure TForm1.Button1Click(Sender: TObject);

//uses句に DateUtils を加えて下さい
//フォーム上にTMemoを配置します

//指定された日付の曜日を返します。

function youbi_1(mon_start:Boolean; youbi_no:Integer):String;
//case文を使ったサンプル
begin
    if mon_start then begin
        youbi_no := youbi_no +1;
    end;

    case youbi_no of
    1:
        Result := '日';
    2:
        Result := '月';
    3:
        Result := '火';
    4:
        Result := '水';
    5:
        Result := '木';
    6:
        Result := '金';
    7:
        Result := '土';
    8:
        Result := '日'; //月曜始まり専用
    else
        Result := '';
    end;

end;

function youbi_2(mon_start:Boolean; youbi_no:Integer):String;
//配列を使ったサンプル
var
    youbi_array: array[1..8] of String;
begin
    youbi_array[1] := '日曜日';
    youbi_array[2] := '月曜日';
    youbi_array[3] := '火曜日';
    youbi_array[4] := '水曜日';
    youbi_array[5] := '木曜日';
    youbi_array[6] := '金曜日';
    youbi_array[7] := '土曜日';
    youbi_array[8] := '日曜日'; //月曜始まり専用

    if mon_start then begin
        youbi_no := youbi_no +1;
    end;

    Result := youbi_array[youbi_no];

end;

var
    base_time: TDateTime;

begin

    base_time := VarToDateTime('2016/4/14 12:00');

    Memo1.Clear;

    Memo1.Lines.Add(FormatDateTime('ddd', base_time));
    Memo1.Lines.Add(FormatDateTime('dddd', base_time));

    Memo1.Lines.Add('--------');
    Memo1.Lines.Add('日曜始まり');
    Memo1.Lines.Add(IntToStr(DayOfWeek(base_time)));
    Memo1.Lines.Add(youbi_1(False, DayOfWeek(base_time)));
    Memo1.Lines.Add(youbi_2(False, DayOfWeek(base_time)));

    Memo1.Lines.Add('--------');
    Memo1.Lines.Add('月曜始まり');
    Memo1.Lines.Add(IntToStr(DayOfTheWeek(base_time)));
    Memo1.Lines.Add(youbi_1(True, DateUtils.DayOfTheWeek(base_time)));
    Memo1.Lines.Add(youbi_2(True, DateUtils.DayOfTheWeek(base_time)));

end;

このようになりましたが、週の始まりが日曜、月曜であっても 2016/4/14 は木曜日なので結果は同じです。

delphi-dayofweek

Delphi関連 – amazon