Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datum-String in Datetime wandeln (https://www.delphipraxis.net/50231-datum-string-datetime-wandeln.html)

matz 22. Jul 2005 10:48


Datum-String in Datetime wandeln
 
Hallo Gemeinde,

gibt es einen einfachen Weg diesen String '18 Jul 2005 09:25:52' in ein DateTime-Format zu wandeln?

Danke schon mal für die Hilfe
Gruße Matz

Matze 22. Jul 2005 10:59

Re: Datum-String in Datetime wandeln
 
Hallo!

Versuche es mal mit Delphi-Referenz durchsuchenStrToDateTime.

matz 22. Jul 2005 11:11

Re: Datum-String in Datetime wandeln
 
Das habe ich bereits getestet - geht leider nicht

Zitat:

Der in S angegebene String muss das aktuell in der Systemsteuerung festgelegte Format haben. In Deutschland ist das Format normalerweise DD.MM.YYYY HH:MM:SS. Die Angaben AM und PM sowie die Sekunden sind optional. Verwenden Sie das 24-Stunden-Format (7:45 PM entspricht dann 19:45), wenn AM oder PM nicht angegeben wird.

Jahresangaben zwischen 0 und 99 werden mithilfe der globalen Variablen TwoDigitYearCenturyWindow konvertiert. Dieser Wert wird entweder in einer globalen Variablen (erste Form) oder als Feld des Parameters FormatSettings (zweite Form) gespeichert. Weitere Informationen finden Sie unter "Formatvariablen für Datums-/Zeitangaben".
Gruß Matz

barf00s 22. Jul 2005 11:27

Re: Datum-String in Datetime wandeln
 
FormatDateTime
StrToDateTime

sind deine Freunde um das Problem zu beheben

matz 22. Jul 2005 11:43

Re: Datum-String in Datetime wandeln
 
Ja der Tipp hilft mir auch nicht weiter

FormatDateTime formatiert ein DateTimeWert in einen String

Ich habe aber bereits einen String '18 Jul 2005 09:25:52' diesen muß ich in ein DateTimeWert wandeln.

Sollte ich hier aber etwas übersehen bitte ich um einen leichten Wink mit dem Zaunpfahl (ein kleines Beispiel)

Gruß Matz

marabu 22. Jul 2005 11:45

Re: Datum-String in Datetime wandeln
 
Hallo Matz,

die Format-Strings der Unit SysUtils sind eher auf die Ausgabe gerichtet. Beim Parsen von Strings bist du abseits des unterstützten Normalfalls (nur Zahlen und Trennzeichen) auf deine eigene Findigkeit angewiesen.

Nicht elegant, aber funktioniert mit deinem Beispiel:

Delphi-Quellcode:
function StrToDateTimeEx(s: string): TDateTime;
var
  i: integer;
  fs: TFormatSettings;
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Delimiter := ' ';
  sl.DelimitedText := s;
  if sl.Count = 4 then begin
    for i := 1 to 12 do
      if ShortMonthNames[i] = sl[1] then begin
        sl[1] := RightStr('0' + IntToStr(i), 2);
        Break;
      end;
    s := Format('%s.%s.%s %s', [sl[0], sl[1], sl[2], sl[3]]);
    sl.Free;
  end;
  GetLocaleFormatSettings(GetUserDefaultLCID, fs);
  with fs do begin
    fs.DateSeparator := '.';
    fs.ShortDateFormat := 'dd.mm.yyyy';
  end;
  Result := StrToDateTime(s, fs);
end;
Grüße vom marabu

matz 22. Jul 2005 11:54

Re: Datum-String in Datetime wandeln
 
Super Marabu - es funktioniert einwandfrei

Danke noch einmal
und Gruß Matz

barf00s 22. Jul 2005 11:57

Re: Datum-String in Datetime wandeln
 
marabu du bistne pätze :)

musst du den kiddies immer gleich alles verraten - die sollen gefälligst selbst mal drauf kommen, anstatt nur fertigen source zu "copy & pasten"

sonst geht der lerngedanke ja verloren ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz