Thema: Delphi Datumskonvertierung

Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: Datumskonvertierung

  Alt 27. Jun 2007, 09:53
Hallo,

auch wenn man für die Ausgabe eines Datums Monatsnamen verwenden kann, so ist doch der interne Parser bei der Umwandlung von Strings alleine auf Zahlenwerte ausgelegt - lediglich die Reihenfolge von DMY wird berücksichtigt.

Delphi-Quellcode:
function StrToDateTime(s: string; fs: TFormatSettings): TDateTime;
var
  i, m: Integer;
begin
  i := Pos('mmm', fs.ShortDateFormat);
  if i > 0 then
  begin
    m := {StrUtils.}AnsiIndexText(Copy(s, i, 3), ShortMonthNames);
    s := {StrUtils.}StuffString(s, i, 3, Format('%.2d', [m + Low(ShortMonthNames)]));
  end;
  Result := SysUtils.StrToDateTime(s, fs);
end;

procedure TDemoForm.ButtonClick(Sender: TObject);
var
  fs: TFormatSettings;
  s: string;
begin
  s := '02-Juni-2008 01:59:00';
  GetLocaleFormatSettings(GetUserDefaultLCID, fs);
  fs.DateSeparator := '-';
  fs.ShortDateFormat := 'dd/mmm/yyyy';
  ShowMessage(DateTimeToStr(StrToDateTime(s, fs), fs));
end;
Ist das Datumstrennzeichen ein Blank, dann ist vielleicht dieser Thread interessant: Datum-String in Datetime wandeln.

Grüße vom marabu
  Mit Zitat antworten Zitat