Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: StrToTime parst in falsches Datum

  Alt 21. Jun 2019, 10:44
Das folgende verwende ich für genau dieses Datumsformat. Du musst wahrscheinlich nur den einen oder anderen Begrenzer anpassen, je nach deinen Anforderungen.
Delphi-Quellcode:
function StrToDate(const AValue: string): TDate;
var
  LJahr, LMonat, LTag: Word;

  function DaysOfMonth(AMonat: Word; AJahr: Word = 0): Word;
  begin
    if (AMonat = 0) or (AMonat > 12) then begin
      Result := 0
    end else begin
      if AMonat = 2 then begin
        if AJahr = 0 then begin
          AJahr := CurrentYear;
        end;
        Result := 28 + Byte(IsLeapYear(AJahr));
      end else begin
        if AMonat > 7 then
          Dec(AMonat);
        Result := 30 + (AMonat mod 2);
      end;
    end;
  end;

begin
  Result := 0;
  LJahr := StrToIntDef(Copy(AValue, 1, 4), 0);
  if (LJahr < 1) or (LJahr > 3000) then begin
    exit;
  end;
  LMonat := StrToIntDef(Copy(AValue, 5, 2), 0);
  if (LMonat < 1) or (LMonat > 12) then begin
    exit;
  end;
  LTag := StrToIntDef(Copy(AValue, 7, 2), 0);
  if (LTag < 1) or (LTag > DaysOfMonth(LMonat, LJahr)) then begin
    exit;
  end;
  if not TryEncodeDate(LJahr, LMonat, LTag, TDateTime(Result)) then begin
    Result := 0;
  end;
end;
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat