var
i: integer;
vLine, vStr, vPart: string;
vYear, vMonth, vDay: Word;
vArr: TArray;
vDate: TDateTime;
begin
Memo2.Clear;
for i := 0 to Memo1.Lines.Count - 1 do
begin
vLine := Memo1.Lines[i];
vStr := StringReplace(vLine, '.', '-', [rfReplaceAll]);
vArr := vStr.Split(['-']);
case Length(vArr) of
2:
begin
vYear := StrToIntDef(vArr[0], 2020);
vMonth := StrToIntDef(vArr[1], 1);
vDay := 1;
if not TryEncodeDateTime(vYear, vMonth, vDay, 0, 0, 0, 0, vDate) then
vDate := now;
end;
3:
begin
vYear := StrToIntDef(vArr[0], 2020);
vMonth := StrToIntDef(vArr[1], 1);
vDay := StrToIntDef(vArr[2], 1);
if not TryEncodeDateTime(vYear, vMonth, vDay, 0, 0, 0, 0, vDate) then
vDate := now;
end;
else
vDate := Now;
end;
Memo2.Lines.Add(FormatDateTime('YYYY-MM-DD', vDate));
end;
end;
来源: