如何将“2012年8月2日18:53”转换为DateTime?
使用StrToDate进行转换时,出现“无效的日期格式”错误。
Variants
单元中的VarToDateTime
,它支持Delphi RTL不支持的各种时间格式。(它基于COM的日期支持例程,例如在各种Microsoft产品中使用的那些例程。)我测试了您提供的日期,它确实正确地将其转换为TDateTime
。在Delphi 2007和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
单元中的函数使用默认用户区域设置。如果不是“美国”,则上述字符串的转换可能会失败。在这种情况下,您最好直接从activex
单元调用VarDateFromStr
并指定美国区域设置:
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.