此代码应在Delphi XE2工作,但它给“不是一个有效的日期和时间”,在StrtoDateTime转换错误:
procedure TForm2.Button1Click(Sender: TObject);
var
s: string;
d: TDateTime;
FmtStngs: TFormatSettings;
begin
GetLocaleFormatSettings(GetThreadLocale, FmtStngs);
FmtStngs.DateSeparator := #32;
FmtStngs.ShortDateFormat := 'dd mmm yyyy';
FmtStngs.TimeSeparator := ':';
FmtStngs.LongTimeFormat := 'hh:nn';
s := FormatDateTime('', Now, FmtStngs);
d := StrToDateTime(s, FmtStngs);
end;
任何提示?
如果你要转换一些特殊的日期时间的格式,你应该更好地利用VarToDateTime代替StrToDateTime。 只需看看两者的实现,你会意识到,这StrToDateTime是莫名其妙......而VarToDateTime会问OS,如果它不能自行确定。
这适用于德尔福XE3(但也应该与早期版本的工作):
procedure TForm2.Button1Click( Sender: TObject );
var
s: string;
d: TDateTime;
FmtStngs: TFormatSettings;
begin
GetLocaleFormatSettings( GetThreadLocale, FmtStngs );
FmtStngs.DateSeparator := #32;
FmtStngs.ShortDateFormat := 'dd mmm yyyy';
FmtStngs.TimeSeparator := ':';
FmtStngs.LongTimeFormat := 'hh:nn';
s := FormatDateTime( '', Now, FmtStngs );
d := VarToDateTime( s );
end;