React Native项目中moment.tz('EDT')提示无数据的问题咨询
解决Moment Timezone提示“has no data for EDT”的问题
这个问题其实很常见——moment-timezone并不支持直接使用**时区缩写(比如EDT)**来指定时区,它只认标准的IANA时区标识符(比如America/New_York这类)。
为什么会报错?
你引入的时区数据里已经包含了America/New_York的完整信息(就是你提到的那段压缩字符串),这个标识符对应的时区会自动处理夏令时的切换:每年夏令时期间自动使用EDT,冬令时期间自动切换为EST,完全不需要你手动指定缩写。而EDT只是一个临时的夏令时缩写,并不是一个有效的时区标识符,所以moment-timezone找不到对应的数据。
解决方法
把代码里的jun.tz('EDT')改成使用IANA时区标识符即可:
var jun = moment("2014-06-01T12:00:00Z"); jun.tz('America/New_York')
执行这段代码后,moment会自动识别6月处于夏令时周期,自动应用EDT时区来转换时间。
额外小技巧
如果之后需要获取当前时间对应的时区缩写(比如EDT或EST),可以在设置好时区后用format('z')方法:
console.log(jun.format('z')); // 会输出 "EDT"
内容的提问来源于stack exchange,提问作者user1232690
相关产品推荐
相关产品推荐

