现在我有一个数据录入界面,其中有日期一栏,现在采用文本框录入,录入后,当保存到数据库中时,采用如下方法:strtodate(Edit1.text),如果文本框中录入的格式同操作系统的日期格式一致,就没问题,例如:操作系统日期格式为YYYY/MM/DD,那么输入2004/10/14没问题,可是,输入2004-10-14就转换出错,称为无效的日期数据.现在我的客户用的操作系统有很多版本,各种日期格式都有,该如何处理好这个问题呢?本想有Datetimepicker,可是,由于日期可以为空,不太好判断!急,谢谢!

解决方案 »

  1.   

    DateSeparator :=  '-';
      strtodate(Edit1.text);
      

  2.   

    先把字符格式如:2004-01-01 的形式  再用strtodate()
      

  3.   

    在程序启动时先格式化时间

    DateSeparator := '-';
      ShortDateFormat := 'm/d/yyyy';
      

  4.   

    //把可能分隔的字符全替换为当前日期分隔符DateSeparator
    var
      S: string;
      vDate: TDateTime;
    begin
      S := '2005/10/10';  S := StringReplace(S, '/', DateSeparator, [rfReplaceAll]);
      S := StringReplace(S, '-', DateSeparator, [rfReplaceAll]);
      S := StringReplace(S, '.', DateSeparator, [rfReplaceAll]);  if TryStrToDate(S, vDate) then
        Caption := DateToStr(vDate)
      else Caption := 'Error';
    end;