如何在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
相关产品推荐
相关产品推荐

