如何在JavaScript中获取日期的时区缩写(如IST、EST)
JavaScript 日期时区全称转缩写方案
方案一:正则替换+时区映射表
JavaScript原生Date对象的toString()方法返回的字符串中,时区为全称格式。我们可以通过预定义的映射表结合正则替换来实现转换:
const d = new Date(); const originalDateStr = d.toString(); // 按需扩展常用时区的全称-缩写映射 const timeZoneMappings = { 'India Standard Time': 'IST', 'China Standard Time': 'CST', 'Eastern Standard Time': 'EST', 'Pacific Standard Time': 'PST' }; // 匹配括号内的时区全称并替换 const formattedDate = originalDateStr.replace(/\(([^)]+)\)/, (_, fullName) => { return `(${timeZoneMappings[fullName] || fullName})`; }); console.log(formattedDate); // 输出示例:Tue May 07 2024 14:57:43 GMT+0530 (IST)
方案二:利用Intl.DateTimeFormat API(更通用)
借助现代浏览器支持的Intl.DateTimeFormat API,可以直接获取时区缩写,无需手动维护映射表:
const d = new Date(); const originalDateStr = d.toString(); // 获取时区缩写 const timeZoneAbbreviation = new Intl.DateTimeFormat('en-US', { timeZoneName: 'short' }) .formatToParts(d) .find(part => part.type === 'timeZoneName').value; // 拼接成目标格式 const formattedDate = `${originalDateStr.split('(')[0]}(${timeZoneAbbreviation})`; console.log(formattedDate); // 输出示例:Tue May 07 2024 14:57:43 GMT+0530 (IST)
注意事项
- 方案二依赖
IntlAPI,IE11及更早版本不支持,若需兼容旧环境建议使用方案一。 - 部分时区缩写存在歧义(比如CST可代表多个时区),需根据业务场景确认需求。
内容的提问来源于stack exchange,提问作者Pradeep Bagga
相关产品推荐
相关产品推荐

