如何将Google时区API返回的时区名称转换为缩写形式?
时区名称转缩写的最佳方法
方法一:手动维护映射表(最可靠)
时区名称与缩写的对应关系固定,直接创建键值对映射表是最不容易出错的方案,能覆盖各种特殊情况:
// 可根据业务需求扩展的时区映射表 const timeZoneAbbrMap = { "Pacific Standard Time": "PST", "Pacific Daylight Time": "PDT", "Eastern Standard Time": "EST", "Eastern Daylight Time": "EDT", "Central Standard Time": "CST", "Central Daylight Time": "CDT" }; // 从API获取的时区名称 var timeZone = jsonResponseTwo.timeZoneName; // 匹配缩写,无匹配时返回原名称或自定义默认值 var timeZoneAbbr = timeZoneAbbrMap[timeZone] || timeZone;
方法二:正则提取首字母(适合简单场景)
如果只处理类似「Xxx Standard Time」「Xxx Daylight Time」的标准格式,可用正则提取每个单词首字母并大写:
var timeZone = jsonResponseTwo.timeZoneName; // 提取每个单词首字母并拼接 var timeZoneAbbr = timeZone.match(/\b\w/g).join('').toUpperCase();
注意:该方法对非标准格式的时区名称可能失效,比如特殊命名的时区,因此仅推荐在场景单一的情况下使用。
方法三:利用Intl API动态获取(适配夏令时)
如果API同时返回了timeZoneId(如「America/Los_Angeles」),可以借助Intl.DateTimeFormat自动获取对应时区的缩写,还能自动适配夏令时/标准时切换:
// 从API获取时区ID var timeZoneId = jsonResponseTwo.timeZoneId; // 生成对应时区的缩写 var timeZoneAbbr = new Intl.DateTimeFormat('en-US', { timeZone: timeZoneId, timeZoneName: 'short' }).formatToParts().find(part => part.type === 'timeZoneName').value;
内容的提问来源于stack exchange,提问作者Shayan Najafi
相关产品推荐
相关产品推荐

