【问题标题】:DateTimeTostr exception errorDateTimeTostr 异常错误
【发布时间】:2012-07-06 16:56:48
【问题描述】:

我在 Delphi 7 下使用该函数的返回值填充了一个 TStringList:

function  dateTime2str(td : TDateTime) : string;
var
  iformatsettings : tformatsettings;
begin
  GetLocaleFormatSettings(LOCALE_USER_DEFAULT, iformatsettings);

  result := DateTimeToStr(td, iFormatSettings);
end;

然后我使用该函数读取 TStringList 的每个值:

function str2DateTime(s : string) : TDateTime;
var
  iformatsettings : tformatsettings;
begin

  GetLocaleFormatSettings(LOCALE_USER_DEFAULT, iformatsettings);


  result := strtodatetime(s,iFormatSettings);

end;

但它会触发 EConvertError 异常: '6/7/12 3:02:31 AM' 不是有效的日期和时间。

为什么?

非常感谢

【问题讨论】:

  • 我猜该格式的日期字符串不适合这台机器上的区域设置。
  • 好的,但我对 2 个函数使用相同的 iformatsettings
  • 你确定吗?你是说你在同一台机器上运行这些功能?
  • 是的。当然。希望你能帮忙。
  • 为确定起见,请在两个函数中写入 iFormatSettings ShortDateFormat,DateSeparator,LongTimeFormatTimeSeparator 的值。

标签: delphi delphi-7


【解决方案1】:

通过使用 FormatDateTime,您可以知道日期和时间的确切格式,因此当您检索它时,它将完全一样,而不是依赖于语言环境配置。

如果第一个函数在一台计算机上运行,​​而第二个函数在另一台计算机上运行,​​则使用第一种方法仍然会遇到问题。

【讨论】:

    猜你喜欢
    • 2015-02-27
    • 2017-03-31
    • 2020-08-21
    • 2013-12-15
    • 2016-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多