![]() |
String in Datum umwandeln
Hallo zusammen,
ich bekomme von einer API diesen schönen String zurück. 2017-12-07T09:23:19.542+0000 Diesen würde ich gerne in ein TDateTime verwandeln. StrToDateTime Funktioniert leider nicht. Wird es funktionieren, wenn ich eine TFormatSettings mit übergebe? Wenn ja gibt es irgend eine Webseite die mir gleich den richtigen String für TFormatSettings ausgeben kann. Weil ich kennne mich mit TFormatSettings überhaupt nicht aus. Gruß, ngott2 |
AW: String in Datum umwandeln
Handelt sich um ein Datum im ISO-Format.
Delphi-Quellcode:
ISO8601ToDate()
|
AW: String in Datum umwandeln
Delphi-Quellcode:
ISO8601ToDate() kommt mit deinem String leider nicht zurecht. Da passt ihm der Timezone Offset in disem Format nicht.
uses
XSBuiltIns; DelphiDateTime := XMLTimeToDateTime('2017-10-19T15:10:33.424Z'); // GMT DelphiDateTime := XMLTimeToDateTime('2017-12-07T09:23:19.542+0000'); // eigene Timezone |
AW: String in Datum umwandeln
System.DateUtils: ISO8601ToDate
|
AW: String in Datum umwandeln
Zitat:
![]() |
AW: String in Datum umwandeln
Hey danke für die Antworten.
Leider funktionieren beide Funktionen mit meinem String nicht. Sind noch bei Delphi Seattle. Der String den ich jetzt zum Testen genommen habe: '2020-01-24T10:56:47.850+0100' Bei der ISO601ToDate Funktion bekomme ich: --------------------------- Anwendungsfehler --------------------------- Ungültiger Zeit-Offset-String: 10:56:47.850+0100. Bei XMLTimeToDateTime bekomme ich --------------------------- Anwendungsfehler --------------------------- Exception EConvertError in Modul *******.exe bei 0002C9CA. Ungültiges Argument zum Codieren der Uhrzeit. Hat jemand noch eine Idee bzw. Lohnt es sich es zu versuchen mit TDateFormat? |
AW: String in Datum umwandeln
XMLTimeToDateTime gibt es seit D7 und funktioniert da leider mit dem Offset "+0000" auch nicht. Das Z Format, also GMT, geht hingegen fehlerfrei. In 10.2.3 geht das aber auch mit dem +xxxx Format ohne Fehler.
|
AW: String in Datum umwandeln
Zitat:
Ich würde einen Wrapper um ISOISO601ToDate machen, der bei Bedarf den Doppelpunkt im Zeit-Offset ergänzt:
Delphi-Quellcode:
Bei einem Update auf 10.3.3+ kannst du den ja wieder rausnehmen.
function ISO8601ToDate(const AISODate: string; AReturnUTC: Boolean = True): TDateTime;
var idxSign: Integer; S: string; begin S := AISODate; idxSign := S.LastIndexOfAny(['+', '-']); if S.LastIndexOf(':') < idxSign then S := S.Insert(idxSign + 3, ':'); Result := System.DateUtils.ISO8601ToDate(S, AReturnUTC); end; |
AW: String in Datum umwandeln
Grade mit 10.0 Seattle ausprobiert,
Delphi-Quellcode:
geht problemlos.
Soap.XsBuiltIns.XMLTimeToDateTime(..)
|
AW: String in Datum umwandeln
Zitat:
Danke euch allen. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 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-2025 by Thomas Breitkreuz