Windows7 DelphiXE2です。
日付 d1 = 2011年1月10日を 'jan.10,2011'と表示したくて
Label1.Caption := FormatDateTime('mmm.d.yyyy', d1)
としたところ 「1.10,2011」と表示されます。
どうしたらいいんでしょうか。
ちなみに
Label1.Caption := FormatDateTime('mmmm.d,yyyy', d1)とすると
としたところ 「1月.10,2011」と表示されます。
ロケールの情報を参照するので、日本語環境で実行した場合は1月又は1になるのでしょう。
英語の月の短縮名を使う場合は、FormatDateTimeの第3引数のAFormatSettingsに英語ロケールの情報を渡す必要があるかと。
こんな感じでしょうか
procedure TForm1.Button1Click(Sender: TObject);
var
fmt: TFormatSettings;
begin
// TFormatSettings.Createにstringが渡せるなら上の初期化で良いでしょうし、Stringが渡せないなら下側の初期化を使ってください
fmt := TFormatSettings.Create('en-US');
// fmt := TFormatSettings.Create(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));
ShowMessage(FormatDateTime('mmm.d.yyyy', Now, Fmt));
end;
auさんありがとうございました。 できました。
ツイート | ![]() |