TimeZoneOffset 函数可以返回用户本地时间和 UTC(协调世界时)的时间差(以分钟为单位),
结合DateAdd可以在本地时间和UTC时间之间做相互转换:
1、本地时间转换为UTC:DateAdd( Now(), TimeZoneOffset(), Minutes )
2、UTC转换为本地时间:DateAdd( UTCTime, −TimeZoneOffset( UTCTime), Minutes )
TimeZoneOffset函数详解可以参考:https://docs.microsoft.com/zh-cn/powerapps/maker/canvas-apps/functions/function-dateadd-datediff
因此通过下面的代码,可以获取到当前用户所在时区(+8:00\-8:00)
Set( CurrentTimeZoneText, If( TimeZoneOffset() > 0, "-", "+" ) & If( Mod( Abs(TimeZoneOffset()), 60 ) < 10, "0", "" ) & RoundDown( Abs(TimeZoneOffset()) / 60, 0 ) & ":" & If( Mod( Abs(TimeZoneOffset()), 60 ) < 10, "0", "" ) & Mod( Abs(TimeZoneOffset()), 60 ) );
通过查询UserSetting表,可以获取到当前用户的账户设置时区code
Set( CurrentTimeZoneCode, LookUp( [@'User Settings'], SystemUserId = userid, timezonecode ) );
根据时区code查询TimeZoneDefinitions表可以获取到时区的具体名称
Set( TimeZoneText, LookUp( [@'Time Zone Definitions'], 'Time Zone Code' = CurrentTimeZoneCode, 'User Interface Name' ) );
时区示例:
通过比较CurrentTimeZoneText 和TimeZoneText两个变量判断时区是否一致
If( !(CurrentTimeZoneText exactin TimeZoneText), Notify( "The current time zone is inconsistent with the account time zone, please go to the personal center to modify!", NotificationType.Warning ) );