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

 

posted @ 2022-01-19 20:54  西伯利亚小菜鸟  阅读(259)  评论(0)    收藏  举报