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,可通过第三方服务或插件实现。

此方法简单有效,适用于大多数时区显示需求。

回到顶部