Moment.js中EDT时区解析正常,IST时区解析失败原因咨询
问题:EDT时区日期可正常转换,IST时区却返回无效日期?
我能成功将带EDT时区的日期字符串转换为Moment对象并格式化:
var dateStr = "Tue Dec 06 00:00:00 EDT 2022"; var momentDateFormatted = moment(dateStr).format("MM-DD-YYYY"); alert(momentDateFormatted); //07-14-2014
但带IST时区的同格式日期字符串转换时,却返回无效日期:
var dateStr1 = "Tue Dec 06 00:00:00 IST 2022"; var momentDateFormatted1 = moment(dateStr1).format("MM-DD-YYYY"); alert(momentDateFormatted1); // Invalid date
两者仅时区标识EDT和IST不同,为何会出现这种情况?
原因解析
- Moment.js(基础版)对时区缩写的支持范围有限:EDT是北美东部夏令时的标准单一含义缩写,属于Moment默认能识别的时区标识集合;
- IST是歧义性时区缩写:它可指代印度标准时间、爱尔兰标准时间等多种不同时区,Moment无法自动判断其具体指向,因此解析失败返回无效日期。
若要正确解析IST这类歧义时区,需使用moment-timezone扩展库,通过明确的时区标识符(如Asia/Kolkata对应印度标准时间)来指定时区,而非依赖模糊的缩写。
内容的提问来源于stack exchange,提问作者Keshav
相关产品推荐
相关产品推荐

