Delphi Firemonkey获取UTC时间

axr492tv  于 2022-11-04  发布在  其他
关注(0)|答案(2)|浏览(273)

如何在Firemonkey中获得UTC时间?
我从另一个Stackoverflow答案中尝试了此代码,但似乎GetSystemTime()在FMX中不可用。

function NowUTC: TDateTime;
Var UTC: TSystemTime;
begin
  GetSystemTime(UTC);
  Result := SystemTimeToDateTime(UTC);
end;
5rgfhyps

5rgfhyps1#

如果将DateUtils添加到uses子句中,则可以使用TTimeZone类,其Local类属性与ToUniversalTime方法:

ShowMessage(DateTimeToStr(TTimeZone.Local.ToUniversalTime(Now)));
ogsagwnx

ogsagwnx2#

TTimeZone.Local.ToUniversalTime(Now)在10月30日3:00〉〉2:00的DST更改期间不起作用。因为在更改期间,有两次2:00-3:00时间,要获得正确的UTC,在过渡时间期间,您必须将函数ToUniversalTime中的ForceDaylight设置为true/false。
在DateUtils单元中有一个TDateTime帮助器,它也反映了UNIX(Android)系统上的DST瞬时时间,并返回正确的UTC时间。在Unix上,使用函数gettimeofday和gmtime_r。

result:=TDateTime.NowUTC;

相关问题