Uni-App Intl获取时区在 Android 失效的解决方法

在 uniapp 中使用 js 获取时区编译到 android 端会提示ReferenceError: Intl is not defined

Intl.DateTimeFormat().resolvedOptions().timeZone // 'Asia/Shanghai'

Intl是浏览器的对象,可以通过它的一系列方法获取时区
目前大部分浏览器都支持Intl。ios也支持,但是安卓app是不支持的

解决办法

通过 uni.getSystemInfoSync() 获取到设备平台,条件判断 android 端使用HTML5+ 语法获取时区

let timeZone = 'unknown'
if (uni.getSystemInfoSync().platform === 'android') {
    // 引入相关的java类,uniapp中使用plus.android.importClass
    timeZone = plus.android.importClass('java.util.TimeZone').getDefault().getID()
} else {
    timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone
}

标签: Uni-App

添加新评论