导入数据,且为日期型的,但不知道格式是怎么样的,因为有很多种,不可预知,怎么将这些数据转化为正规的日期:如格式为YYYY.MM.DD?

解决方案 »

  1.   

    sdate:=strtodate(输入);
    formatdatetime('yyyy.mm.dd',sdate);
      

  2.   

    可以将各种各样的的格式收集起来,使用case.... of 一一对应着转换成你要的格式
      

  3.   

    sdate:=strtodate(输入);
    formatdatetime('yyyy.mm.dd',sdate);
      

  4.   

    直接用formatdatetime('yyyy.mm.dd',sdate);
    肯定报错,不是有效日期。
    黑牛有没有现成的代码?
      

  5.   

    >>直接用formatdatetime('yyyy.mm.dd',sdate);
    不是直接啊,你看前面還有一句:
    >>sdate:=strtodate(输入);
    能轉為 date 類型的, 應該就可用 formatdatetime這個函數啊!!要不然,前一句已經會報錯了!!
      

  6.   

    对,就是前一句报错了。其实从日期转为STRING很简单,难的是从STRING转化成日期,因为STRING中不知道包含了什么。
      

  7.   

    uses windows;
    ....
    DateSeparator:='-';
    str1:=StringReplace('2003.05.01','.','-',[rfReplaceAll]);
    date1:=strtodate(str1);
      

  8.   

    不能没有一点规律吧!
    比如是 yyyy.mm.dd / yyyy!mm!dd/yyyy^mm^dd  这种格式的话就可以用StringReplace(DateStr,'./!/^','-') //用-替换原来的分隔符还有一种比较通用的办法就是 
    str:=0;
    for i:=0 to Length(string) do 
    begin
       try
          StrToInt(string[i]);
          Str:=Str+ string[i];
       except
          continue;
       end;
    end;    //循环取string[i],然后只要StrToInt(string[i]) 不触发异常,说明str是合法的数字,最后Str因该是一个合法的8位数字,然后再用copy来拆咯
      

  9.   

    uses windows;
    ....
    SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SDATE,'-');
    str1:=StringReplace('2003.05.01','.','-',[rfReplaceAll]);
    date1:=strtodate(str1);
      

  10.   

    formatdatetime('yyyy.mm.dd',date());