你试一试下面的程序,我已验证过
procedure TForm1.Button1Click(Sender: TObject);
var
  D:tdatetime;
begin
  ShortDateFormat:='YYYY-MM-DD';
  LongDateFormat:='YYYY-MM-DD';
  DateSeparator:='-';
  TwoDigitYearCenturyWindow := 90;
  D:=strtodate('00-04-18');
  showmessage(datetostr(D));
end;

解决方案 »

  1.   

    var
      str:string;
      d1,d2:datetime;
    begin
      d1:=strtodatetime(str);
      str :=formatdatetime('yyyy-mm-dd',d1);
      d2:=strtodatetime(str);
    end;
    解释:d2为返回值。
      

  2.   

    在Delphi中,日期的字串必须有分隔符。象000418的字串在没有经变换的前提下是不能由Delphi的strtodate来转换的。以下提供一种方法,在对原来字串经少量处理后可实现你想要的功能,程序如下:procedure TForm1.Button1Click(Sender: TObject);
    var
      sd,s:string;
      dt:TDatetime;
    begin
      shortdateformat := 'yy-mm-dd';
      s :='000418';
      insert('-',s,3);
      insert('-',s,6);
      dt := strtodate(s);
      shortdateformat:='yyyy-mm-dd';
      sd := datetostr(dt);
      Edit1.Text :=sd;
    end;你在一个新的工程中加入一个Button和一个Edit, 在Buton1的Onclick加入上述代码即可看到结果。
      

  3.   

    我提供一个很常用的方法,很有效.先定义3个word变量 var y,m,d:word;
    在某过程中加入下面代码,假定在edit1编辑框中显示.
    代码为:
       decodedate(date,y,m,d);
       edit1.text:=y+'-'+m+'-'+d;
    是不是很方便?^o^