[Delphi]DayOfWeekなど日付から曜日を表示
トップページへ
Delphi(楽天市場で探す ・ amazonで探す)で、曜日の数字を返す SysUtils.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メニューへ戻る