The code below converts a java.sql.Timestamp value returned by java.sql.Timestamp.getTime() into a .NET DateTime value.
As the Java.sql.Timestamp value is the number of milliseconds since 1st Jan 1970 00:00:00 GMT, to convert the value into a .Net DateTime value, we simply create a DateTime record of 1st Jan 1970 00:00:00 GMT, and add the number of milliseconds into it.
function JavaBaseToNETDateTime(ALong: Int64): DateTime;var LBaseDateTime: DateTime; TS: TimeSpan;begin LBaseDateTime := DateTime.Create(1970, 1, 1); TS := TimeSpan.FromMilliseconds(ALong); Result := LBaseDateTime.AddMilliseconds(ALong).ToLocalTime;end;
The above is one of the functions I had to write when I had to convert a Java application to a Delphi.NET application.
In 2017, with the release of Delphi 10.2 Tokyo, Embarcadero introduced a specialized implementation of the Observer pattern into the System.Classes unit. While it has been in the wild for 9 years, it remains a "hidden" architecture for many, primarily because it serves as the invisible engine behind LiveBindings. Other than live bindings, you can also use the Observer pattern as a way to update component settings to the Windows registry, an .ini file, or persist it elsewhere.
System.Classes