function TForm7.StrToDateFrmt(const iFormat, iDateStr: string): TDateTime;
var
AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word;
aPos: Integer;
procedure InitVars;
begin
AYear := 1;
AMonth := 1;
ADay := 1;
AHour := 0;
AMinute := 0;
ASecond := 0;
AMilliSecond := 0;
end;
function GetPart(const iPart: Char): Word;
var
aYCnt: Integer;
begin
Result := 0;
aYCnt := 0;
while (aPos <= High(iFormat)) and (iFormat.Chars[aPos + aYCnt] = iPart) do
inc(aYCnt);
Result := StrToInt(iDateStr.Substring(aPos, aYCnt));
aPos := aPos + aYCnt;
end;
begin
InitVars;
aPos := 0;
while aPos <= High(iFormat) do
begin
case iFormat.Chars[aPos] of
'Y':
AYear := GetPart('Y');
'M':
AMonth := GetPart('M');
'D':
ADay := GetPart('D');
'H':
AHour := GetPart('H');
'N':
AMinute := GetPart('N');
'S':
ASecond := GetPart('S');
'Z':
AMilliSecond := GetPart('Z');
else
inc(aPos);
end;
end;
Result := EncodeDateTime(AYear, AMonth, ADay, AHour, AMinute, ASecond,
AMilliSecond);
end;