请问怎样让TryStrToDatetime('1999年1月1日',D)返回True?

CGS 2004-05-11 10:16:54
请问怎样让TryStrToDatetime('1999年1月1日',D)返回True?
...全文
195 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
CGS 2004-05-12
  • 打赏
  • 举报
回复
to:lijinghe1(副乡长)
OK,我试试!
CGS 2004-05-12
  • 打赏
  • 举报
回复
问题是:客户总认为'1991年1月1日'或'1991/1/1','1月1日'都是合法的日期,而不管系统时间设置情况。

说白了,就是把以前各式各样字符串('1991年1月1日'或'1991/1/1','1月1日')转换成DELPHI的TDatetime类型,功能类似于VB中的IsDate,CDate函数.
lijinghe1 2004-05-12
  • 打赏
  • 举报
回复
TryStrToDatetime不可能实现的,里面的ScanDate有问题。

自己从新写吧,并不复杂。以前曾经写过,数据迁移经常要用这样的函数。
yat5460 2004-05-12
  • 打赏
  • 举报
回复
还是做个DateForm让用户选好点,不要让用户输入,方便又不会出错
begin
Edit.Text.enable:=False;
application.CreateForm(TDateForm,DateForm);
if (DateForm.ShowModal=mrok) then
begin
Edit2.Text:='';
Edit2.Text:=DateTimeToStr(DateForm.date1.Date);
end;
DateForm.Free;
end;
aiirii 2004-05-12
  • 打赏
  • 举报
回复
这个与你的系统时间设置有关!!
看看控制面板的 区域设置 吧
CGS 2004-05-11
  • 打赏
  • 举报
回复
楼上误解我的意思了,
其实我想做一个合法日期验证过程
function CheckDatetime(const s:string):boolean;
当s='1991年1月1日'或'1991/1/1','1月1日'等时返回真

记得VB中IsDate函数有此功能。

network0022 2004-05-11
  • 打赏
  • 举报
回复
AnsiReplaceStr函数在strUtils单元中

var
str: string;
D: TDateTime;
begin
str := AnsiReplaceStr('2003年5月11日','年','-');
str := AnsiReplaceStr(str,'月','-');
str := AnsiReplaceStr(str,'日','');
if TryStrToDatetime(str,D) then
ShowMessage(str);
end
CGS 2004-05-11
  • 打赏
  • 举报
回复
up

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧