如何把string转换成dateTime类型?(50)

  • 主题发起人 主题发起人 paulwang200810
  • 开始时间 开始时间
P

paulwang200810

Unregistered / Unconfirmed
GUEST, unregistred user!
如string: 20000111 20040912 20090214如何转换成DateTime? xiexie
 
截取加上"-"就行了.
 
如果你要求仅仅是要变成DATETIME,就用StrToDate('20040912')
 
function StrToDate(S:string);TDateTime;begin Result:=EncodeDate(StrToInt(Copy(S,1,4)),StrToInt(Copy(5,2)),StrToInt(Copy(S,7,2)),0,0,0,0);end;
 
TDATETIME其实是一个双精度浮点数function StrToDate(const S: string): TDateTime; overload;function StrToDate(const S: string; const FormatSettings: TFormatSettings): TDateTime; overload;这个函数符合楼主的需要,格式可以使用FormatSettings参数定义function EncodeDate(Year, Month, Day: Word): TDateTime;这个函数有三个参数,是对下面一个参数的封装(加入了错误处理)事实上这些函数最终都调用这个函数实现function TryEncodeDate(Year, Month, Day: Word; out Date: TDateTime): Boolean;var I: Integer; DayTable: PDayTable;begin Result := False; DayTable := @MonthDays[IsLeapYear(Year)]; if (Year >= 1) and (Year <= 9999) and (Month >= 1) and (Month <= 12) and (Day >= 1) and (Day <= DayTable^[Month]) then begin for I := 1 to Month - 1 do Inc(Day, DayTable^); I := Year - 1; Date := I * 365 + I div 4 - I div 100 + I div 400 + Day - DateDelta; Result := True; end;end;
 
楼上的几位兄弟说的已经很全面了。
 
地质灾害的回答很好。如果编写的函数不是在该单元,而是在其他单元,比如说公共单元的话,在调用该函数时候需要指明单元名称,因为该函数名与SysUtils的函数重名。如果是采用StrToDate函数的话,则需要将该字符替换为'2000-01-11'格式(我在D7中,其他格式不能转换),可以采用先声明一个字符串变量,然后用如下方法赋值给该字符串,如声明字符串变量为StempStemp=FORMAT('%S-%S-%S',[COPY(s,1,4),COPY(s,5,2),COPY(s,7,2)]);或者stemp := Copy(s,1,4)+'-'+Copy(s,5,2)+'-'+Copy(s,7,2);然后再用strtodate函数即可。
 
多人接受答案了。
 
后退
顶部