Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String nach TDateTime wandeln (https://www.delphipraxis.net/169650-string-nach-tdatetime-wandeln.html)

Angel4585 2. Aug 2012 14:12

Delphi-Version: 2010

String nach TDateTime wandeln
 
Hallo! :)

Ich arbeite mit dem Windows Task Scheduler und bekomme von einem Objekt der Klasse IDailyTrigger einen String mit einem Zeitstempel.

Auf meinem Rechner sieht der so aus:

2012-08-02T15:01:33

Wenn ich den über StrToDateTime konvertieren möchte, bekomme ich folgende Meldung:

---------------------------
'2012-08-02T15:01:33' ist keine gültige Datums- und Uhrzeitangabe.
---------------------------

Ich vermute, dass man den String auf jedem System in diesem Format bekommt, da ich ein anderes Datumsformat eingestellt habe.

Aber wie wandel ich den jetzt um?
Gibt es ein Pendant zu FormatDatetime bei dem ich ja das Format mit angeben kann?

mkinzler 2. Aug 2012 14:16

AW: String nach TDateTime wandeln
 
In neueren Delphiversionen gibt es überladene Versionen, bei denen man als weiteren Parameter das Format angeben kann.

Iwo Asnet 2. Aug 2012 14:46

AW: String nach TDateTime wandeln
 
Für uralte Versionen und komplett ohne ordentliche Prüfung:

Delphi-Quellcode:
function XMLTimestampToDateTime(dts: string): TDateTime;
var
  y, m, d, h, n, s: Integer;
  // 12345678901234567890
  // YYYY-MM-DD HH:NN:SS
begin
  y := StrToIntDef(Copy(dts, 1, 4), 0);
  m := StrToIntDef(Copy(dts, 6, 2), 0);
  d := StrToIntDef(Copy(dts, 9, 2), 0);
  h := StrToIntDef(Copy(dts, 12, 2), 0);
  n := StrToIntDef(Copy(dts, 15, 2), 0);
  s := StrToIntDef(Copy(dts, 18, 2), 0);
  Result := EncodeDate(y, m, d) + EncodeTime(h, n, s, 0);
end;

Angel4585 2. Aug 2012 15:04

AW: String nach TDateTime wandeln
 
Vielen Dank Ihr beide :)
Ja ich kann auch das Format mit geben, als TFormatSettings, aber irgendwie funktioniert das nicht wie ich will.
Hab zwar die einzelnen Date und Time Formate entsprechend eingestellt aber trotzdem kommt die gleiche Meldung.

Naja hab jetzt das von Iwo Asnet genommen und das geht.

himitsu 2. Aug 2012 15:28

AW: String nach TDateTime wandeln
 
Zitat:

Zitat von Angel4585 (Beitrag 1176696)
aber irgendwie funktioniert das nicht

http://www.delphipraxis.net/168924-s...ml#post1171572


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

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