function NormalizDate(const Value : String):String; var OldP : PChar; P : PChar; procedure SkipBlank(); begin while not(p^ in ['0'..'9']) do Inc(P); end; procedure SkipNumber(MaxLen : Integer); var len : Integer; begin Len := 0; while (p^ in ['0'..'9'])and(len < MaxLen) do begin Inc(P); Inc(Len); end; end; var y,m,d : string; ny,nm,nd : Integer; begin P := PChar(Value); //获取年的部分 SkipBlank(); OldP :=P; SkipNumber(4); SetString(y, OldP, p - oldP); //获取月的部分 SkipBlank(); OldP :=P; SkipNumber(2); SetString(m, OldP, p - oldP); //获取日的部分 SkipBlank(); OldP :=P; SkipNumber(2); SetString(d, OldP, p - oldP); // if not TryStrToInt(y, ny) then ny := 2000; if not TryStrToInt(m, nm) then nm := 1; if not TryStrToInt(d, nd) then nd := 1; //整合 Result := Format('%0.4d-%0.2d-%0.2d',[ny,nm,nd]); end; 话3分钟写了一个.理论上可以满足楼主的要求
function NormalizDate(const Value : String):String; var OldP : PChar; P : PChar; procedure SkipBlank(); begin while not(p^ in ['0'..'9']) do begin if p^ = #0 then Break; Inc(P); end; end; procedure SkipNumber(MaxLen : Integer); var len : Integer; begin Len := 0; while (p^ in ['0'..'9'])and(len < MaxLen) do begin if p^ = #0 then Break; Inc(P); Inc(Len); end; end; var y,m,d : string; ny,nm,nd : Integer; begin P := PChar(Value); //获取年的部分 SkipBlank(); OldP :=P; SkipNumber(4); SetString(y, OldP, p - oldP); //获取月的部分 SkipBlank(); OldP :=P; SkipNumber(2); SetString(m, OldP, p - oldP); //获取日的部分 SkipBlank(); OldP :=P; SkipNumber(2); SetString(d, OldP, p - oldP); // if not TryStrToInt(y, ny) then ny := 2000; if not TryStrToInt(m, nm) then nm := 1; if not TryStrToInt(d, nd) then nd := 1; //整合 Result := Format('%0.4d-%0.2d-%0.2d',[ny,nm,nd]); end; 改了一点.加了个防止字符串不够长的限制
保存到数据库格式为:FormatdateTime('yyyy-mm-dd',DateTimePicker1.DateTime);
var
OldP : PChar;
P : PChar;
procedure SkipBlank();
begin
while not(p^ in ['0'..'9']) do
Inc(P);
end;
procedure SkipNumber(MaxLen : Integer);
var
len : Integer;
begin
Len := 0;
while (p^ in ['0'..'9'])and(len < MaxLen) do
begin
Inc(P);
Inc(Len);
end;
end;
var
y,m,d : string;
ny,nm,nd : Integer;
begin
P := PChar(Value);
//获取年的部分
SkipBlank();
OldP :=P;
SkipNumber(4);
SetString(y, OldP, p - oldP); //获取月的部分
SkipBlank();
OldP :=P;
SkipNumber(2);
SetString(m, OldP, p - oldP);
//获取日的部分
SkipBlank();
OldP :=P;
SkipNumber(2);
SetString(d, OldP, p - oldP);
//
if not TryStrToInt(y, ny) then
ny := 2000;
if not TryStrToInt(m, nm) then
nm := 1;
if not TryStrToInt(d, nd) then
nd := 1;
//整合
Result := Format('%0.4d-%0.2d-%0.2d',[ny,nm,nd]);
end;
话3分钟写了一个.理论上可以满足楼主的要求
var
OldP : PChar;
P : PChar;
procedure SkipBlank();
begin
while not(p^ in ['0'..'9']) do
begin
if p^ = #0 then
Break;
Inc(P);
end;
end;
procedure SkipNumber(MaxLen : Integer);
var
len : Integer;
begin
Len := 0;
while (p^ in ['0'..'9'])and(len < MaxLen) do
begin
if p^ = #0 then
Break;
Inc(P);
Inc(Len);
end;
end;
var
y,m,d : string;
ny,nm,nd : Integer;
begin
P := PChar(Value);
//获取年的部分
SkipBlank();
OldP :=P;
SkipNumber(4);
SetString(y, OldP, p - oldP); //获取月的部分
SkipBlank();
OldP :=P;
SkipNumber(2);
SetString(m, OldP, p - oldP);
//获取日的部分
SkipBlank();
OldP :=P;
SkipNumber(2);
SetString(d, OldP, p - oldP);
//
if not TryStrToInt(y, ny) then
ny := 2000;
if not TryStrToInt(m, nm) then
nm := 1;
if not TryStrToInt(d, nd) then
nd := 1;
//整合
Result := Format('%0.4d-%0.2d-%0.2d',[ny,nm,nd]);
end;
改了一点.加了个防止字符串不够长的限制
LongDateTimeFormat = 'YYYY-MM-DD HH:NN:SS';