我期望以下代码可以正常工作:
program Project3; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; var FS: TFormatSettings; const DF = 'yyyymmdd'; begin try WriteLn(FormatDateTime(DF,Now)); FS := TFormatSettings.Create; FS.ShortDateFormat := DF; WriteLn(StrToDate('20121219',FS)); ReadLn; except on E: Exception do Writeln(E.ClassName,': ',E.Message); end; end.
为什么会抛出异常,说“20121219”不是有效的日期? TFormatSettings应该怎么做?
解决方法
StrToDate()需要在FS.DateSeparator中定义的分隔符:Char;所以不能是空的.
参考:
http://docwiki.embarcadero.com/Libraries/XE3/en/System.SysUtils.StrToDate