如何判断日期的正确性? 大家好,我做了一个文本框Edit1用来输入日期。请问如何判断出用户输入的日期是否正确?(yyyy-mm-dd) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我不能使用MaskEdit,只能使用TEdit控件,通过代码进行判断。 先关注,楼主的意思是判断用户是否按照yyy-mm-dd格式输入时间吗? 用下面的函数:function IsDate(s:string):Boolean;var d:TDateTime;begin try d:=StrToDate(s); Result:=true; except Result:=false; end;end; FormateDatetime('YYYY-MM-DD',StrToDateDef(Edit1.Text,'1900-01-01')); 对的,自己写函数判断:function IsDate(s:string):Boolean;var d:TDateTime;begin try d:=StrToDate(s); Result:=true; except Result:=false; end;end; 楼上的利用StrToDate函数和异常是比较简单有效的办法 没必要录入的时候判断,onexit的时候或者save的时候判断一下就可以了 if strtodatedef(edit1.text,0)=0 then showmessage('请按yyyy-mm-dd格式输入') 没错,在ONEXIT或ONKEYDOWN或ONKEYPRESS里判断好点 你这样设置最好把字段设为字符型 try et_TdEtdDatetime.Date:= StrToDate(et_TdEtdDate.Text); et_TdEtdDate.Text:= FormatDateTime('YYYY-MM-DD',et_TdEtdDatetime.Date) except Application.MessageBox('数据类型转化错误','提示信息',MB_OK); et_TdEtdDate.SetFocus; end; 小恐龙的方法好是好,但是他不小心写错了,有两个地方出错一个是FormatDatetime他写成了FormateDatetime,多了一个e第二个错误是StrToDateDef函数的参数错误,StrToDateDef(Edit1.Text,'1900-01-01')第二个参数应该是TDateTime型,用字符串编辑无法通过。改一下就行了FormatDatetime('YYYY-MM-DD',StrToDateDef(Edit1.Text,StrToDate('1900-01-01')));不过根据楼主的意思我觉得还是用“zyxgd”写的函数好一些吧 楼上的还要StrToDate('1900-01-01'),,,不如直接写成1900-01-01 FormatDatetime('YYYY-MM-DD',StrToDateDef(Edit1.Text,'1900-01-01'); var d:TDateTime;begin if not TryStrToDate(edit1.text,d) then begin ShowMessage('Error,please check the date value'); exit; end; ShowMessage('I got a date'+datetostr(d));end; 请问^PChar是代表什么类型 delphi7 两个表字段间比较的问题 delphi2009中的Edit控件能移植到delphi2007中吗? 请问关于更新多表的问题? 想问一下大家平时开发时采取怎样的命名规范? 我学习学习,谢谢! 可以动态建立控件吗?! 从vb转来学delphi 大家有什么建议? AddressOf 在DELPHI里怎么做 能详细讲解消息的返回值吗? 让函数返回一个数组,这样为什么不行? 求16进制转10进制的算法! 实现绑架其它程序
function IsDate(s:string):Boolean;
var
d:TDateTime;
begin
try
d:=StrToDate(s);
Result:=true;
except
Result:=false;
end;
end;
var
d:TDateTime;
begin
try
d:=StrToDate(s);
Result:=true;
except
Result:=false;
end;
end;
if strtodatedef(edit1.text,0)=0 then showmessage('请按yyyy-mm-dd格式输入')
try
et_TdEtdDatetime.Date:= StrToDate(et_TdEtdDate.Text);
et_TdEtdDate.Text:= FormatDateTime('YYYY-MM-DD',et_TdEtdDatetime.Date)
except
Application.MessageBox('数据类型转化错误','提示信息',MB_OK);
et_TdEtdDate.SetFocus;
end;
一个是FormatDatetime他写成了FormateDatetime,多了一个e
第二个错误是StrToDateDef函数的参数错误,StrToDateDef(Edit1.Text,'1900-01-01')第二个参数应该是TDateTime型,用字符串编辑无法通过。
改一下就行了
FormatDatetime('YYYY-MM-DD',StrToDateDef(Edit1.Text,StrToDate('1900-01-01')));
不过根据楼主的意思我觉得还是用“zyxgd”写的函数好一些吧
d:TDateTime;
begin
if not TryStrToDate(edit1.text,d) then
begin
ShowMessage('Error,please check the date value');
exit;
end;
ShowMessage('I got a date'+datetostr(d));
end;