大家好,我做了一个文本框Edit1用来输入日期。请问如何判断出用户输入的日期是否正确?(yyyy-mm-dd)

解决方案 »

  1.   

    我不能使用MaskEdit,只能使用TEdit控件,通过代码进行判断。
      

  2.   

    先关注,楼主的意思是判断用户是否按照yyy-mm-dd格式输入时间吗?
      

  3.   

    用下面的函数:
    function IsDate(s:string):Boolean;
    var
      d:TDateTime;
    begin
      try
        d:=StrToDate(s);
        Result:=true;
      except
        Result:=false;
      end;
    end;
      

  4.   

    FormateDatetime('YYYY-MM-DD',StrToDateDef(Edit1.Text,'1900-01-01'));
      

  5.   

    对的,自己写函数判断:function IsDate(s:string):Boolean;
    var
      d:TDateTime;
    begin
      try
        d:=StrToDate(s);
        Result:=true;
      except
        Result:=false;
      end;
    end;
      

  6.   

    楼上的利用StrToDate函数和异常是比较简单有效的办法
      

  7.   

    没必要录入的时候判断,onexit的时候或者save的时候判断一下就可以了 
    if strtodatedef(edit1.text,0)=0 then showmessage('请按yyyy-mm-dd格式输入')
      

  8.   

    没错,在ONEXIT或ONKEYDOWN或ONKEYPRESS里判断好点
      

  9.   

    你这样设置最好把字段设为字符型
      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;
      

  10.   

    小恐龙的方法好是好,但是他不小心写错了,有两个地方出错
    一个是FormatDatetime他写成了FormateDatetime,多了一个e
    第二个错误是StrToDateDef函数的参数错误,StrToDateDef(Edit1.Text,'1900-01-01')第二个参数应该是TDateTime型,用字符串编辑无法通过。
    改一下就行了
    FormatDatetime('YYYY-MM-DD',StrToDateDef(Edit1.Text,StrToDate('1900-01-01')));
    不过根据楼主的意思我觉得还是用“zyxgd”写的函数好一些吧
      

  11.   

    楼上的还要StrToDate('1900-01-01'),,,不如直接写成1900-01-01
      

  12.   

    FormatDatetime('YYYY-MM-DD',StrToDateDef(Edit1.Text,'1900-01-01');
      

  13.   

    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;