strtodate日期转换出现 'is not valid date'的错误(100分)

  • 主题发起人 swordman_hu
  • 开始时间
S

swordman_hu

Unregistered / Unconfirmed
GUEST, unregistred user!
我用
strtodate('2001-12-30') 出现'is not a valid date '错误
我查看 控制面板->区域设置->日期
发现日期 分隔符号用了 '/' 如果改为'-'就没有问题
----
我的程序在很多地方用了strtodate()的函数改起来比较麻烦,所以我尝试用--

begin
ShortDateFormat:='yyyy-MM-dd';
ShortDateFormat:='yyyy-MM-dd';
DateSeparator:='-';
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run

end;
还是出现'is not a valid date 的错误'

后来我又用
procedure TForm1.Button1Click(Sender: TObject);
var
DateSeparator: Char;
ShortDateFormat: string;
begin
DateSeparator:='-';
ShortDateFormat:='yyyy-mm-dd';
strtodate('2000-12-30');
end;
还是错误

------------
我不想改区域设置的日期,请教有什么好的方法解决这个问题
我的程序在很多地方用了strtodate()的函数改起来比较麻烦
 
我记得以前的帖子也论坛过关于这个的,你可以搜索一下。
 
如果知道的请贴上来,谢谢
 
建议改用 ENCODEDATE()

例子:
procedure TForm1.Button1Click(Sender: TObject);
var
MyDate: TDateTime;
begin
MyDate := EncodeDate(StrToInt(Edit1.Text), StrToInt(Edit2.Text), StrToInt(Edit3.Text));
Label1.Caption := DateToStr(MyDate);
end;
 
在主程序的OnCreate事件中加入:
DateSeparator := '-';
ShortDateFormat := 'yyyy-mm-dd';
LongDateFormat := 'yyyy-mm-dd';
 
begin
// ShortDateFormat:='yyyy-MM-dd';
LongDateFormat:='yyyy-MM-dd';
ShortDateFormat:='yyyy-MM-dd';
DateSeparator:='-';
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run

end;
 
自建一个函数STR2DATE(text: string): TDate;
var Y,M,D:word;
begin
Y := strtoint(copy(text,1,4));
M := strtoint(copy(text,6,2));
D := strtoint(copy(text,9,2));
result := EncodeDate(Y,M,D);

end;
 
在主程序的OnCreate事件中加入:
DateSeparator := '-';
ShortDateFormat := 'yyyy-mm-dd';
试试看
 
如果你的string本身就不是****-**-**格式,你非要strtodate那肯定出错了,你可以先
try
strtodate(string1);
except
showmessage('日期无效');
exit;
end;
还有,我估计是别的地方出错的。你好好查查。
 
顶部