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 @   西伯利亚小菜鸟  阅读(218)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示