如何在所有平台(Android / iOS / Mac / Windows)上将本地时间转换为UTC?在Windows上,我使用以下功能:
function AlLocalDateTimeToGMTDateTime(Const aLocalDateTime: TDateTime): TdateTime;
{--------------------------------------------}
function InternalCalcTimeZoneBias : TDateTime;
const Time_Zone_ID_DayLight = 2;
var TZI: TTimeZoneInformation;
TZIResult: Integer;
aBias : Integer;
begin
TZIResult := GetTimeZoneInformation(TZI);
if TZIResult = -1 then Result := 0
else begin
if TZIResult = Time_Zone_ID_DayLight then aBias := TZI.Bias + TZI.DayLightBias
else aBias := TZI.Bias + TZI.StandardBias;
Result := EncodeTime(Abs(aBias) div 60, Abs(aBias) mod 60, 0, 0);
if aBias < 0 then Result := -Result;
end;
end;
begin
Result := aLocalDateTime + InternalCalcTimeZoneBias;
end;
有没有可以使用的跨平台等效产品?
最佳答案
从TTimeZone.ToUniversalTime
单元调用System.DateUtils
。反之,则使用TTimeZone.ToLocalTime
。您不仅可以丢弃现有代码,还可以用单个跨平台函数调用将其替换。
熟悉此单元将是一个谨慎的举动。