gpt4 book ai didi

delphi - 使用 StrToDateTime 和 TFormatSettings 进行转换不起作用

转载 作者:行者123 更新时间:2023-12-03 14:35:43 27 4
gpt4 key购买 nike

此代码应该在 Delphi XE2 中工作,但在 StrtoDateTime 转换中给出“不是有效的日期和时间”错误:

procedure TForm2.Button1Click(Sender: TObject);
var
s: string;
d: TDateTime;
FmtStngs: TFormatSettings;
begin
GetLocaleFormatSettings(GetThreadLocale, FmtStngs);
FmtStngs.DateSeparator := #32;
FmtStngs.ShortDateFormat := 'dd mmm yyyy';
FmtStngs.TimeSeparator := ':';
FmtStngs.LongTimeFormat := 'hh:nn';

s := FormatDateTime('', Now, FmtStngs);
d := StrToDateTime(s, FmtStngs);
end;

有什么提示吗?

最佳答案

如果你想转换一些特殊的日期时间格式,你最好使用 VarToDateTime而不是 StrToDateTime。只要看一下两者的实现,您就会认识到,StrToDateTime 是某种......而 VarToDateTime 会询问操作系统是否无法自行确定。

这适用于 Delphi XE3(但也应该适用于早期版本):

procedure TForm2.Button1Click( Sender: TObject );
var
s: string;
d: TDateTime;
FmtStngs: TFormatSettings;
begin
GetLocaleFormatSettings( GetThreadLocale, FmtStngs );
FmtStngs.DateSeparator := #32;
FmtStngs.ShortDateFormat := 'dd mmm yyyy';
FmtStngs.TimeSeparator := ':';
FmtStngs.LongTimeFormat := 'hh:nn';

s := FormatDateTime( '', Now, FmtStngs );
d := VarToDateTime( s );
end;

关于delphi - 使用 StrToDateTime 和 TFormatSettings 进行转换不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13308472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com