Delphi StrToDate不接受日期

时间:2017-08-29 15:37:14

标签: delphi delphi-2010

我正在尝试使用StrToDate方法将日期从字符串转换为TDate,但是当我以yyyy / mm / dd格式向其传递日期时,它会给我这个错误:'' ' 2013年/ 11/12''不是有效日期'。我有什么想法,我做错了什么?感谢

var
  newDate: TDate;
begin
  newDate := StrToDate(sDate);
end;

1 个答案:

答案 0 :(得分:7)

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

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

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;