Delphi TZDB may be useful. The main feature is the class that processes time using the tz database , which, if it contains enough historical data, will allow you to use UTC as an intermediary. The tz database aims to have rules for all time zones around the world and various time shifts for things like leap years, daylight saving time, calendar changes, etc., since they have been around UTC since the Unix era (Midnight , Jan 1, 1970).
After installing the package, the use will be performed on the lines of the following form:
function ConvertFromGMTToBST(const AGMTTime: TDateTime): TDateTime;
var
tzGMT, tzBST: TTimeZone;
UTCTime: TDateTime;
begin
tzGMT := TBundledTimeZone.GetTimeZone('GMT');
tzBST := TBundledTimeZone.GetTimeZone('BST');
UTCTime := tzGMT.ToUniversalTime(AGMTTime);
Result := tzBST.ToLocalTime(UTCTime);
end;
. , GMT BST tz. , . (, America/New_York). -, , Delphi XE+. TZDB , Delphi 6 ( FreePascal), .
, , 20- .