uniapp 如何获取当前设备时区
在uniapp开发中,如何获取当前设备所在的时区?我需要根据用户设备时区动态显示时间,但不知道用什么API或方法实现。求具体代码示例或解决方案。
2 回复
使用 uni.getSystemInfoSync() 获取 timezoneOffset 属性,表示与 UTC 的分钟差值。例如:
const systemInfo = uni.getSystemInfoSync();
console.log(systemInfo.timezoneOffset);
返回负数表示东时区,正数表示西时区。
在 UniApp 中,可以通过 JavaScript 的 Date 对象获取当前设备时区。以下是具体方法:
1. 获取时区偏移量(分钟)
const timezoneOffset = new Date().getTimezoneOffset(); // 返回与 UTC 的分钟差
- 东时区为负值(如北京时间 -480),西时区为正值。
- 注意:
getTimezoneOffset()返回的是本地时间与 UTC 的差异。
2. 转换为小时格式
const timezone = - (timezoneOffset / 60); // 转换为小时
console.log(`设备时区:UTC${timezone >= 0 ? '+' : ''}${timezone}`);
完整示例
// 在 UniApp 的 .vue 文件 methods 或 onLoad 中使用
getDeviceTimezone() {
const offset = new Date().getTimezoneOffset();
const timezoneHour = - (offset / 60);
const sign = timezoneHour >= 0 ? '+' : '-';
console.log(`当前时区:UTC${sign}${Math.abs(timezoneHour)}`);
return `UTC${sign}${Math.abs(timezoneHour)}`;
}
注意事项
- 该方法依赖设备系统时间设置。
- 如需时区名称(如 “Asia/Shanghai”),目前 UniApp 无直接 API,可通过第三方服务或插件实现。
此方法简单有效,适用于大多数时区显示需求。

