I am open to use a different API or data types to get the values. One could say my difficulty lies with getting the correct conversion method that was valid at a past moment in time, even if that moment lies just a few milliseconds back:
procedure GetUTCAndLocalNow(var UTC, Local: TDateTime);
var
Convert: Func<TDateTime, TDateTime>;
begin
Local := Now;
Convert := GetConvertMethodForAPastMomentInTime(Local);
// ... even if this past moment in time is just some milliseconds ago
// it might have changed due to a change in DST observation
UTC := Convert(Local);
end;