Как получить текущее время в другой TimeZone в Delphi?

Как получить текущее время из разных часовых поясов в Delphi. Если я использую TidSNTP, это даст мне только часовой пояс в моей локали.

Ответ 1

Вы можете легко преобразовать местное время в другой часовой пояс с помощью delphi-tzdb (База данных часовых поясов для Delphi).

Ниже приведен пример из документации.

var
  LSydney: TTimeZone;
  LMadeUpLocalTime, LUniversalTime,
    LSydneyTime: TDateTime;
begin
  // Get the Sydney time zone 
  LSydney := TBundledTimeZone.GetTimeZone('Australia/Sydney');

  // Encode a local date/time value -- 14th March 2009 at 12:45:00 PM 
  LMadeUpLocalTime := EncodeDateTime(2009, 03, 14, 12, 45, 00, 00);

  // Find out what was the time in Sydney at that moment 
  LUniversalTime := TTimeZone.Local.ToUniversalTime(LMadeUpLocalTime);
  LSydneyTime := LSydney.ToLocalTime(LUniversalTime);

  WriteLn(Format('When in my time zone the time was %s, in Sydney it was %s.',
   [DateTimeToStr(LMadeUpLocalTime), DateTimeToStr(LSydneyTime)]));
end;