如何在所有平台(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;
我可以使用跨平台的等效物吗?
答案 0 :(得分:7)
从TTimeZone.ToUniversalTime
单元拨打System.DateUtils
。在相反的方向,您使用TTimeZone.ToLocalTime
。您不仅可以丢弃现有代码,还可以使用单个跨平台函数调用替换它。
熟悉这个单位将是一个谨慎的举动。