You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Cordova/PhoneGap中获取设备时区以转换Firebase服务器时间?

获取Cordova设备时区名称的解决方案

这个问题问得好!我之前刚好处理过完全一样的场景,要把Firebase存储的服务器时间转成设备本地时区,确实需要拿到Europe/London这种格式的时区名称,用Cordova的cordova-plugin-globalization插件就能轻松搞定,下面是具体步骤:

1. 安装插件

首先在你的Cordova项目里安装这个全球化插件,执行终端命令:

cordova plugin add cordova-plugin-globalization

2. 获取设备时区名称

这个插件提供了navigator.globalization.getTimeZoneName方法,能直接获取设备的标准时区名称(完全匹配moment.tz要求的格式)。示例代码如下:

// 获取设备时区名称
navigator.globalization.getTimeZoneName(
    function (successResult) {
        // successResult.value就是我们需要的时区名称
        const deviceTimezone = successResult.value;
        console.log("设备时区:", deviceTimezone);
        
        // 结合你原有的moment.js代码完成时间转换
        const serverTimestamp = snapshot3.val().date;
        const localDate = moment.tz(serverTimestamp, deviceTimezone).format("MM-DD-YYYY HH:mm");
        // 这里可以把localDate渲染到页面上展示
    },
    function (error) {
        // 处理获取失败的情况,设置一个默认时区兜底
        console.error("获取时区失败:", error);
        const fallbackTimezone = "Europe/London";
        const localDate = moment.tz(serverTimestamp, fallbackTimezone).format("MM-DD-YYYY HH:mm");
    }
);

3. 额外提示

  • 注意:这个API是Cordova原生API,只能在真机或模拟器上正常运行,浏览器环境下无法调用;
  • 除了时区名称,这个插件还支持获取设备的语言偏好、本地日期格式等国际化相关信息,功能很全面;
  • 建议始终设置兜底时区,避免因权限或设备兼容性问题导致功能异常。

内容的提问来源于stack exchange,提问作者Sandra Lopez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:52:48