Delphi StrToDate不接受日期

Rud*_*iel 0 delphi delphi-2010

我试图通过使用StrToDate方法将日期从字符串转换为TDate,但是当我以yyyy/mm/dd格式传递日期时,它给出了我的错误:'''2013/11/12''是不是有效的日期'.我有什么想法我做错了吗?谢谢

var
  newDate: TDate;
begin
  newDate := StrToDate(sDate);
end;
Run Code Online (Sandbox Code Playgroud)

Rem*_*eau 7

StrToDate()只有string输入的重载版本使用操作系统中用户的默认语言环境设置.该错误表示该字符串与用户的日期语言环境格式不匹配.

使用重载版本StrToDate()接受TFormatSettings输入作为输入,以便您可以指定所需的格式:

var
  newDate: TDate;
  fmt: TFormatSettings;
begin
  // TFormatSettings.Create() was added in XE
  // and GetLocaleFormatSettings() was deprecated
  //
  // fmt := TFormatSettings.Create;
  GetLocaleFormatSettings(0, fmt);

  fmt.ShortDateFormat := 'yyyy/mm/dd';
  fmt.DateSeparator := '/';

  newDate := StrToDate(sDate, fmt);
end;
Run Code Online (Sandbox Code Playgroud)

  • 是的,Emba以这种方式设计它使得记录构造函数看起来与引用类型构造函数相同. (4认同)
  • @MartynA:不,因为`TFormatSettings`是记录类型,而不是类类型. (2认同)