请问如何将 20040409 这样的字符串直接转换成 TDateTime 型?我知道 2004-04-09  这样的字符串可以用 StrToDate 直接转,可是中间没有 - 的字符串系统有没有一步转换的方法(自己再写代码不算)?

解决方案 »

  1.   

    错了,是formatdatetime,印象中没问题,或者用formatstr也可以
      

  2.   

    function FormatDateTime(const Format: string; DateTime: TDateTime): string; overload;function FormatDateTime(const Format: string; DateTime: TDateTime; const FormatSettings: TFormatSettings): string; overload;我查了一下帮助: FotmatDateTime 返回的是 string 而不是 TDateTime 呀, 不是我想要的!
      

  3.   

    用copy转换成相应的格式后,转换就可以了
      

  4.   

    strtodatetime(),有这样的函数,但你的字符串必须符合日期格式,不能是随便一个字符串。
      

  5.   

    function StrToDateTime(const S: string): TDateTime; overload;
    这个方法显然不能一步完成转换function StrToDateTime(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload;
    这个 FormatSettings 该怎么设置才行呢?若是实在没有一步转换的方法的话, 自己写代码转换又该如何写最好? 谢谢大家了!
      

  6.   

    想简单点的话,我只想到一个办法。
    就是用MaskEdit,先设计它的文本格式。
    使它能输入的内容只能为日期样式。然后再用strtodatetime()进行转换。
    我没试过,没办法就试试这个吧。
      

  7.   

    只能用代码写啦:
    var s1,s2:string;
    s1:='20040410';
    s2:=copy(s1,1,4)+'-'+copy(s1,5,2)+'-'+copy(s1,7,2) ;
    showmessage(s2);
      

  8.   

    copy的写法不太高明吧?用insert插入两个“-”再调用StrToDate转换!
      

  9.   

    procedure TForm1.Button7Click(Sender: TObject);
    var
      str:String;
      DateTime:TDateTime;
    begin
      str:='20040409';
      DateTime:=StrToDateTime(FormatFloat('0000-00-00',StrToInt(str)));
    end;
      

  10.   

    gazo(不爱女兵我爱谁) ( ) 信誉:100 
    的代码我测试过!OK
      

  11.   

    uses MaskUtils;
    procedure TForm1.Button6Click(Sender: TObject);
    var
      S, EditMask: string;
      DateTime:TDateTime;
    begin
      S := '200402021456';
      EditMask := '!99/99/00 99:99';   //datetime
      Caption:=MaskDoFormatText(EditMask, S, ' ');
      //
      S := '20040203';
      EditMask := '!99/99/00';        //date
      Caption:=MaskDoFormatText(EditMask, S, #32);
      DateTime:=StrToDateTime(Caption);
    end;