【发布时间】: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,LongTimeFormat和TimeSeparator的值。