如何根据国家代码获取对应UTC时区列表及当前本地时间
获取国家对应UTC时区列表及本地时间展示方法
一、获取时区列表的实现思路
通过语言内置的时区处理API,结合国家代码与时区标识符的映射关系实现:
- 维护一份国家代码到对应时区标识符的映射表(比如
bg对应Europe/Sofia,pl对应Europe/Warsaw) - 利用时区标识符获取该时区的UTC偏移量,转换为
UTC ±X的格式
示例代码(JavaScript)
// 国家代码到时区的映射(可按需扩展) const countryTimeZoneMap = { bg: ['Europe/Sofia'], pl: ['Europe/Warsaw'], it: ['Europe/Rome'] }; // 获取指定国家的UTC时区偏移列表 function getCountryUTCOffsets(countryCode) { const timeZones = countryTimeZoneMap[countryCode.toLowerCase()] || []; return timeZones.map(tz => { const date = new Date(); // getTimezoneOffset返回UTC与本地时间的差值(分钟),符号需反转 const utcOffset = -(date.getTimezoneOffset() / 60); return `UTC ${utcOffset >= 0 ? '+' : ''}${utcOffset}`; }); }
二、两种展示格式实现
1. 国家可用UTC时区列表格式
调用上述函数后按指定格式输出:
- BG可用时区:UTC +2
- PL可用时区:UTC +1、UTC +2(夏令时切换时偏移变化)
- IT可用时区:UTC +1、UTC +2(夏令时切换时偏移变化)
2. 当前本地时间展示格式
通过时区标识符生成带UTC偏移的本地时间:
// 获取指定时区的本地时间及UTC偏移 function getLocalTimeWithUTC(tzName) { const now = new Date(); // 生成中文格式的时间字符串 const localTime = now.toLocaleTimeString('zh-CN', { timeZone: tzName, hour12: false, hour: '2-digit', minute: '2-digit' }); const utcOffset = -(now.getTimezoneOffset() / 60); const utcStr = `UTC ${utcOffset >= 0 ? '+' : ''}${utcOffset}`; // 提取时区对应的城市/区域名称 const regionName = tzName.split('/')[1].replace('_', ' '); return `${regionName}时间 ${localTime} ${utcStr}`; } // 示例:获取奥地利(维也纳时区)的当前本地时间 console.log(getLocalTimeWithUTC('Europe/Vienna')); // 输出示例:维也纳时间 11:00 UTC +1
内容的提问来源于stack exchange,提问作者IncognitoUser
相关产品推荐
相关产品推荐

