Was mich wirklich wundert: Dieses Problem müsste ja eigenltich jeder haben, der die TJSON.ObjectToJSONString bzw. TJSON.JSONToObject nutzt und irgendwelche Zeitdaten überträgt.
Die Methoden verhalten sich bei korrekter Anwendung auch richtig.
Delphi-Quellcode:
type
TMyObject = class
public
FDt: TDateTime;
end;
procedure Test();
begin
var dt := EncodeDateTime(2023, 11, 1, 10, 52, 0, 0);
var obj := TMyObject.Create;
try
obj.FDt := dt;
var json := TJson.ObjectToJsonObject(obj, [joDateFormatISO8601]);
Writeln(json.ToJSON);
obj.FDt := 0;
TJson.JsonToObject(obj, json, [joDateFormatISO8601]);
if SameDate(obj.FDt, dt) then
Writeln('OK')
else
Writeln('Fail');
finally
obj.Free;
end;
end;
Ergibt
Zitat:
{"dt":"2023-11-01T10:52:00.000+01:00"}
OK
Kannst du mal ein konkretes Beispiel zeigen, mit dem das Problem reproduzierbar ist?