其他分享
首页 > 其他分享> > Canvas App中如何获取手机本地时区,并和账户时区做对比

Canvas App中如何获取手机本地时区,并和账户时区做对比

作者:互联网

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
    )
);

 

标签:UTC,Canvas,App,60,Abs,本地,时区,TimeZoneOffset
来源: https://www.cnblogs.com/summersun09314/p/15824070.html