如何在Firemonkey中获得UTC时间?我从另一个Stackoverflow答案中尝试了此代码,但似乎GetSystemTime()在FMX中不可用。
function NowUTC: TDateTime; Var UTC: TSystemTime; begin GetSystemTime(UTC); Result := SystemTimeToDateTime(UTC); end;
5rgfhyps1#
如果将DateUtils添加到uses子句中,则可以使用TTimeZone类,其Local类属性与ToUniversalTime方法:
DateUtils
uses
TTimeZone
Local
ToUniversalTime
ShowMessage(DateTimeToStr(TTimeZone.Local.ToUniversalTime(Now)));
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;
2条答案
按热度按时间5rgfhyps1#
如果将
DateUtils
添加到uses
子句中,则可以使用TTimeZone
类,其Local
类属性与ToUniversalTime
方法: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。