Delphi Programming / Object Pascal
[掲載 2019年05月21日] [更新 2019年05月21日] Delphi 一般・その他 |
月名あるいは曜日名の英語表記 |
動作確認等 |
Windows 7 U64(SP1) + Delphi XE5(UP2) Pro VCL-32 |
月名と曜日名は TFormatSettings
の以下のメンバーから取得できます. |
- LongMonthNames - 長い月名の文字列配列
- ShortMonthNames - 短い月名の文字列配列
- LongDayNames - 長い曜日名の文字列配列
- ShortDayNames - 短い曜日名の文字列配列
|
以下は,月名と曜日名を列挙するサンプルコードとしの実行結果です. |
|
図1
長い月名と短い月名 |
|
図2
長い曜日名と短い曜日名 |
//============================================================================
// 現在のロケールにおける長い月名と短い月名のリスト
//============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
LFmtSet : TFormatSettings;
LIndex : Integer;
LText : string;
begin
Memo1.Lines.Clear;
LFmtSet := TFormatSettings.Create;
for LIndex := Low(LFmtSet.LongMonthNames) to HIgh(LFmtSet.LongMonthNames) do begin
LText := LFmtSet.LongMonthNames[LIndex] + ' - '
+ LFmtSet.ShortMonthNames[LIndex];
Memo1.Lines.Add(LText);
end;
end;
//============================================================================
// 現在のロケールにおける長い曜日名と短い曜日名のリスト
//============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
LFmtSet : TFormatSettings;
LIndex : Integer;
LText : string;
begin
Memo1.Lines.Clear;
LFmtSet := TFormatSettings.Create;
for LIndex := Low(LFmtSet.LongDayNames) to HIgh(LFmtSet.LongDayNames) do begin
LText := LFmtSet.LongDayNames[LIndex] + ' - '
+ LFmtSet.ShortDayNames[LIndex];
Memo1.Lines.Add(LText);
end;
end;
TFormatSettings.Create の引数のロケール ID として $0409 を指定すると,各文字列配列の要素には英語表記の月名と曜日名が格納されます.$0409 は英語 (米国) のロケール ID です. |
|
図3
英語表記の長い月名と短い月名 |
|
図4
英語表記の長い曜日名と短い曜日名 |
ロケール ID の値を $0419 にするとロシア語になります. |
|
図5
ロシア語の長い月名と短い月名 |
//============================================================================
// 長い月名と短い月名の英語表記リスト
// $0409 は 10 進数では 1033
//============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
LFmtSet : TFormatSettings;
LIndex : Integer;
LText : string;
begin
Memo1.Lines.Clear;
LFmtSet := TFormatSettings.Create($0409);
for LIndex := Low(LFmtSet.LongMonthNames) to HIgh(LFmtSet.LongMonthNames) do begin
LText := LFmtSet.LongMonthNames[LIndex] + ' - '
+ LFmtSet.ShortMonthNames[LIndex];
Memo1.Lines.Add(LText);
end;
end;
//============================================================================
// 長い曜日名と短い曜日名の英語表記リスト
// $0409 は 10 進数では 1033
//============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
LFmtSet : TFormatSettings;
LIndex : Integer;
LText : string;
begin
Memo1.Lines.Clear;
LFmtSet := TFormatSettings.Create($0409);
for LIndex := Low(LFmtSet.LongDayNames) to HIgh(LFmtSet.LongDayNames) do begin
LText := LFmtSet.LongDayNames[LIndex] + ' - '
+ LFmtSet.ShortDayNames[LIndex];
Memo1.Lines.Add(LText);
end;
end;
03_FormatDateTime で英語表記の月名と曜日名を表示 |
FormatDateTime 等を使して日付を文字列に変換する際,TFormatSettings.Create で英語のロケール ID を指定して取得した TFormatSettings の値を引数に指定すると英語表記にできます.
引数の TFormatSettings を指定しない場合は,グローバルなロケール ID が設定が使われます. |
|
図6
FormatDateTime で英語表記 |
//=============================================================================
// 書式指定で日付を表示
// 曜日名と月名を英語で表示
// FormatDateTime を使用
//=============================================================================
procedure TForm1.Button1Click(Sender: TObject);
var
LFmtSet : TFormatSettings;
LDate : TDate;
LFormat : string;
begin
Memo1.Lines.Clear;
LFmtSet := TFormatSettings.Create($0409);
LFormat := LFmtSet.LongDateFormat;
LDate := EncodeDate(2020, 6, 5);
Memo1.Lines.Add('Format : ' + LFormat);
Memo1.Lines.Add('');
Memo1.Lines.Add(FormatDateTime(LFormat, LDate));
Memo1.Lines.Add(FormatDateTime(LFormat, LDate, LFmtSet));
end;
//=============================================================================
// 書式指定で日付を表示
// 曜日名と月名を英語で表示
// DateTimeToString を使用
//=============================================================================
procedure TForm1.Button2Click(Sender: TObject);
var
LFmtSet : TFormatSettings;
LDate : TDate;
LFormat : string;
LText : string;
begin
Memo1.Lines.Clear;
LFmtSet := TFormatSettings.Create($0409);
LFormat := LFmtSet.LongDateFormat;
LDate := EncodeDate(2020, 6, 5);
Memo1.Lines.Add('Format : ' + LFormat);
Memo1.Lines.Add('');
DateTimeToString(LText, LFormat, LDate);
Memo1.Lines.Add(LText);
DateTimeToString(LText, LFormat, LDate, LFmtSet);
Memo1.Lines.Add(LText);
end;
|