如何使用expo-localization获取设备时区?Localization.timezone已弃用
Expo设备时区获取方案
虽然Localization.timezone被官方标记为弃用,但现阶段它还能正常使用——不过既然官方不推荐依赖这个字段,给你两个靠谱的替代方案:
方案一:直接使用JavaScript原生API
浏览器和React Native环境都支持标准的Intl API,无需额外依赖就能直接获取时区:
const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; console.log(timeZone); // 示例输出:"Asia/Shanghai"
这是ECMAScript的标准特性,兼容性好,返回的是IANA标准时区标识符(如"Europe/London"),格式通用适配各种场景。
方案二:结合expo-localization补全时区信息
如果需要将时区数据和getLocales()返回的Locale对象结合使用,可以通过原生API补准时区字段:
import { Localization } from 'expo-localization'; const locales = Localization.getLocales(); const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone; // 将时区信息合并到首个Locale对象中 const localeWithTimeZone = { ...locales[0], timeZone: userTimeZone };
注意事项
Localization.timezone当前仍可正常调用,但未来版本可能被移除,建议优先采用原生IntlAPI方案。
内容的提问来源于stack exchange,提问作者Aleister Crowley
相关产品推荐
相关产品推荐

