今回はDelphi/400での日付の標準フォーマットについてご説明いたします。
Delphi/400のアプリケーションで日付形式を表示をする場合、
通常は “YYYY/MM/DD” のフォーマット形式で表示されます。
これは実行するPC上のシステム値に基づいて自動で設定されますので、
同じアプリケーションを実行しても、
PCの設定が “YYYY/MM/DD” となっていない場合、
“MM/DD/YYYY” 等の別形式で表示されてしまう場合があります。
このPCのシステム値は、コントロールパネルの「地域と日付」で設定されている
「日付(短い形式)」が使用されます。
または同設定画面の「追加の設定」部分での設定値が使用されます。
PCの設定によって、こうした形式に左右されないようにプログラムで対応する場合、
Delphi上で保持しているShortDateFormatを利用することができます。
(※Delphi XE3以降では、デフォルトの書式設定がFormatSettingsに
集約されたため、FormatSettings.ShortDateFormat のように記述します。)
例えば、次のようにCreate時にShortDateFormatをプログラムで固定セットすることで
環境に依存しない日付表示形式を維持することができます。
//例)フォームのCreateイベント
procedure TForm1.FormCreate(Sender: TObject);
begin
FormatSettings.ShortDateFormat := 'yyyy/mm/dd'; // 形式を固定でセット
end;
また、ShortDateFormat 以外にも書式設定の変数には以下のようなものがあります。
それぞれ、値を代入することで実行中EXEに限った設定変更が可能です。
procedure TForm1.Button1Click(Sender: TObject);
begin
// デフォルトのFormatSettingsで現在日時を表示(右のコメントは表示される文字列の例)
ShowMessage(FormatDateTime(FormatSettings.ShortDateFormat, Now)); // 2023/05/16
ShowMessage(FormatDateTime(FormatSettings.LongDateFormat, Now)); // 2023年5月16日
ShowMessage(FormatDateTime(FormatSettings.TimeAMString, Now)); // 午前
ShowMessage(FormatDateTime(FormatSettings.TimePMString, Now)); // 午後
ShowMessage(FormatDateTime(FormatSettings.ShortTimeFormat, Now)); // 10:18
ShowMessage(FormatDateTime(FormatSettings.LongTimeFormat, Now)); // 10:18:58
// FormatSettingsを変更(変更はEXE終了時まで有効)
FormatSettings.ShortDateFormat := 'ge/m/d';
FormatSettings.LongDateFormat := 'ggee年mm月dd日';
FormatSettings.LongTimeFormat := 'hh時nn分ss秒ですわよ!';
// 変更されたFormatSettingsで現在日時を表示
ShowMessage(FormatDateTime(FormatSettings.ShortDateFormat, Now)); // 令5/5/16
ShowMessage(FormatDateTime(FormatSettings.LongDateFormat, Now)); // 令和05年05月16日
ShowMessage(FormatDateTime(FormatSettings.LongTimeFormat, Now)); // 10時19分05秒ですわよ!
end;
<関連TIPS記事>
【Delphi】日付や時刻に関する関数(MIGARO. 技術Tips)