「2012年8月2日18:53」をDateTimeに変換するにはどうすればよいですか?
変換にStrToDateを使用すると、エラー「無効な日付形式」が発生します
DelphiのRTLではサポートされていないさまざまな時間形式をサポートするVarToDateTime
(ユニットにある)を使用できます。Variants
(これは、さまざまなMicrosoft製品で使用されているようなCOMの日付サポートルーチンに基づいています。)提供された日付でテストしましたが、実際にTDateTime
正しく変換されます。Delphi2007とXE2の両方でテスト済み。
program Project2;
{$APPTYPE CONSOLE}
{$R *.res}
uses
SysUtils, Variants;
var
DT: TDateTime;
TestDate: String;
begin
TestDate := '02 August 2012 18:53';
try
DT := VarToDateTime(TestDate);
{ TODO -oUser -cConsole Main : Insert code here }
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
Writeln(FormatDateTime('mm/dd/yyyy hh:nn', DT));
Readln;
end.
別の使用例(そのページの下部にあるリンク)を含む、現在のドキュメントの詳細情報。
ユニット内の関数Variants
はデフォルトのユーザーロケールを使用することに注意してください。'US'でない場合、上記の文字列からの変換は失敗する可能性があります。その場合は、米国のロケールを指定してユニットVarDateFromStr
から直接呼び出す方がよいでしょう。activex
uses
sysutils, activex, comobj;
var
TestDate: String;
DT: TDateTime;
begin
try
TestDate := '02 August 2012 18:53';
OleCheck(VarDateFromStr(WideString(TestDate), $0409, 0, Double(DT)));
Writeln(FormatDateTime('mm/dd/yyyy hh:nn', DT));
Readln;
except
on E:Exception do
Writeln(E.Classname, ': ', E.Message);
end;
end.