如何将Fri Nov 19 13:05:53 CST 2010格式的时间格式化成"yyyy-mm-dd hh:mm:ss"?

解决方案 »

  1.   


    FormatDateTime("yyyy-mm-dd hh:mm:ss",now);
      

  2.   

    FormatDateTime('yyyy-mm-dd hh:nn:ss',now);
      

  3.   

    自己写个函数:
    1、分段Copy,再合成;
    2、使用CASE语句,将英文月,转换为数字;
      

  4.   


    实现如下://如何将Fri Nov 19 13:05:53 CST 2010格式的时间格式化成"yyyy-mm-dd hh:mm:ss"?
    Function ChangeString(sSource:String):String;
      Function GetSubStr(var vStr:String):String;
      var
        sTemp:String;
        SepCharPos:Integer;
      begin
        SepCharPos:=Pos(' ',vStr);
        sTemp:=Copy(vStr,1,SepCharPos-1);
        Delete(vStr,1,SepCharPos);
        GetSubStr:=sTemp;
      end;
      Function GetSubNum(Str:String):Integer;
      var
        i:Integer;
        StrLen:Integer;
        iNum:Integer;
      begin
        StrLen:=Length(Str);
        iNum:=0;
        for i:=1 to StrLen do
          if Copy(Str,i,1)=' ' then
            inc(iNum);
        GetSubNum:=iNum;
      end;
      Function FindMonth(sMonth:String):String;
      var
        i:Integer;
      const
        aMonth: array[1..12] of String =
                        ('Jan','Feb','Mar','Apr','May','Jun',
                        'July','Aug','sep','Oct','Nov','Dec');
      begin
        for i:=1 to 12 do
        begin
          if sMonth=aMonth[i] then
          begin
            if i<10 then FindMonth:='0'+IntToStr(i)
            else FindMonth:=IntToStr(i);
            Break;
          end;
        end;
      end;
    var
      i,iNum:Integer;
      aStr:Array of String;
      stemp:String;
    begin
      sTemp:=trim(sSource)+' ';
      iNum:=GetSubNum(sTemp);
      SetLength(aStr,iNum);
      for i:=0 to iNum-1 do aStr[i]:=GetSubStr(sTemp);
      ChangeString:= aStr[5]+'-'+FindMonth(aStr[1])+'-'+aStr[2]+' '+aStr[3];
    end;//输入:Fri Nov 19 13:05:53 CST 2010
    //输出:2010-11-19 13:05:53
    //调用实例如下:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      ShowMessage(ChangeString('Fri Nov 19 13:05:53 CST 2010'));
    end;
      

  5.   

    请问2楼的 FormatDateTime("yyyy-mm-dd hh:mm:ss",now); 这个能行吗?你试过吗,我试过,不行。最好还是自己写一个函数,取日期再用decodedatetime 取年月日时分秒再用inttostr转成字符,想要什么都能转。
      

  6.   

    自己寫個函數處理吧
    eg:Nov  9 2010 10:26AMselect top 1 CONVERT(datetime,dt) as dt from RES_BLACK_LIST
    dt
    -----------------------
    2010-11-09 10:26:00.000(1 個資料列受到影響)
    declare @aa nvarchar(20)
    set @aa='Nov  9 2010 10:26:23 AM'
    select CONVERT(datetime,@aa) as dtdt
    -----------------------
    2010-11-09 10:26:23.000(1 個資料列受到影響)