0

0

使用 JavaScript Intl 对象获取标准时区名称列表

花韻仙語

花韻仙語

发布时间:2025-10-30 12:30:26

|

561人浏览过

|

来源于php中文网

原创

使用 JavaScript Intl 对象获取标准时区名称列表

本文旨在解决在前端应用中获取标准时区名称列表的需求。针对从 moment.js 迁移到 day.js 后,发现 day.js 缺乏直接获取时区列表方法的问题,本教程将介绍如何利用原生 javascript 的 `intl.supportedvaluesof('timezone')` api,高效、准确地获取符合 iana 规范的时区标识符列表,无需依赖特定日期库插件,并解释其优势及应用。

前端开发中,处理日期和时间,尤其是涉及到不同时区时,是一个常见的需求。开发者经常会使用像 Moment.js 或 Day.js 这样的流行日期处理库。Moment.js 及其配套的 Moment-Timezone 插件提供了一个便捷的方法 moment.tz().names() 来获取所有支持的时区名称列表。然而,当项目迁移到更轻量级的 Day.js 时,可能会发现 Day.js 核心库或其常用插件并未直接提供类似的功能来获取一个标准化的时区名称列表。

尽管 Day.js 拥有强大的插件生态系统(例如 dayjs-timezone 用于时区转换),但获取一个 所有可用时区名称 的列表,实际上并不需要依赖特定的日期处理库。现代浏览器提供了一个强大的原生 JavaScript API,即 Intl 对象,它专门用于国际化相关的操作,其中就包括了获取支持的时区列表。

利用 Intl.supportedValuesOf('timeZone') 获取时区列表

Intl.supportedValuesOf() 方法是 Intl 对象的静态方法,它返回一个包含给定类别所有支持值的数组。当传入 'timeZone' 作为参数时,它将返回一个由浏览器支持的所有 IANA(Internet Assigned Numbers Authority)时区标识符组成的数组。这些标识符是全球公认的标准,例如 "America/New_York"、"Europe/London"、"Asia/Shanghai" 等。

示例代码:

立即学习Java免费学习笔记(深入)”;

您可以在浏览器的开发者控制台或任何 JavaScript 环境中执行以下代码,立即获取支持的时区列表:

const timezoneNames = Intl.supportedValuesOf('timeZone');

console.log("当前环境支持的 IANA 时区列表(共 " + timezoneNames.length + " 个):");
timezoneNames.forEach(zone => {
    console.log(zone);
});

// 如果您需要将列表用于下拉菜单或其他UI组件,可以直接使用这个数组
// console.log(timezoneNames);

执行上述代码后,控制台将输出一个包含数百个时区标识符的列表。

Figma
Figma

Figma 是一款基于云端的 UI 设计工具,可以在线进行产品原型、设计、评审、交付等工作。

下载

为什么选择 Intl.supportedValuesOf('timeZone')?

  1. 原生支持,无需额外依赖: 这是 JavaScript 语言的内置功能,无需引入任何第三方库或插件,即可实现时区列表的获取,从而减少项目体积和依赖管理复杂度。
  2. 标准化与准确性: 返回的都是标准的 IANA 时区标识符。这些标识符是全球通用的,并且能够正确处理夏令时(Daylight Saving Time, DST)的切换,因为它们代表的是一个地理区域的完整时区规则,而非简单的固定偏移量。
  3. 广泛的浏览器兼容性: 现代主流浏览器(包括 Chrome, Firefox, Safari, Edge 等)都广泛支持 Intl 对象及其相关方法,因此在大多数前端项目中可以放心使用。
  4. 涵盖冬/夏令时变化: IANA 时区标识符(如 "America/New_York")本身就包含了该地区所有历史和未来的时区规则,包括夏令时的调整。因此,通过此方法获取的列表,其每个条目都隐式地考虑了冬/夏令时的变化。

关于“更短、更紧凑的列表”的考量

用户可能希望获取一个“更短、更紧凑”的时区列表,而不是完整的数百个 IANA 标识符。Intl.supportedValuesOf('timeZone') 提供的是一个全面的标准列表。如果您的应用需要一个精简版列表(例如,只显示主要城市、用户所在国家/地区的时区,或最常用的时区),您需要在获取完整列表后进行二次过滤和处理

例如,您可以:

  • 按区域过滤: 筛选出特定大洲(如 "Europe/" 开头)或国家(通过解析标识符)的时区。
  • 使用流行度排序: 根据用户数据或常见需求,只展示最常用的时区。
  • 提供搜索功能: 让用户通过搜索快速找到所需时区。
  • 结合用户位置: 利用地理位置 API 获取用户的当前时区,并将其置于列表顶部。

结合 Day.js 的应用

虽然 Intl.supportedValuesOf('timeZone') 解决了获取时区列表的问题,但 Day.js 在处理这些时区方面依然非常有用。一旦您获取了时区名称列表,您可以将这些名称与 Day.js 的 dayjs-timezone 插件结合使用,以实现更复杂的日期时间操作:

// 假设您已经安装并导入了 Day.js 和 dayjs-timezone 插件
// import dayjs from 'dayjs';
// import utc from 'dayjs/plugin/utc';
// import timezone from 'dayjs/plugin/timezone';

// dayjs.extend(utc);
// dayjs.extend(timezone);

// 从 Intl API 获取的时区名称
const selectedTimeZone = 'America/New_York';

// 使用 Day.js 在特定时区显示时间
const nowInNewYork = dayjs().tz(selectedTimeZone);
console.log(`当前纽约时间:${nowInNewYork.format('YYYY-MM-DD HH:mm:ss')}`);

// 将一个特定时间字符串解析为纽约时间
const specificTime = '2023-10-27 10:00:00';
const parsedTimeInNewYork = dayjs.tz(specificTime, selectedTimeZone);
console.log(`指定时间在纽约:${parsedTimeInNewYork.format('YYYY-MM-DD HH:mm:ss')}`);

通过这种方式,Intl.supportedValuesOf('timeZone') 负责提供标准的时区数据源,而 Day.js 则专注于日期时间的解析、格式化和转换,两者各司其职,共同构建强大的日期时间处理能力。

总结

在前端开发中获取标准时区名称列表,最佳实践是利用原生 JavaScript 的 Intl.supportedValuesOf('timeZone') API。它提供了一个无需额外依赖、标准化且涵盖冬/夏令时变化的 IANA 时区标识符列表。虽然该方法返回的是一个全面的列表,但您可以根据应用需求进行进一步的过滤和处理,以生成更精简的选项。结合 Day.js 等日期处理库,您可以高效地管理和显示不同时区下的日期和时间信息。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
chrome什么意思
chrome什么意思

chrome是浏览器的意思,由Google开发的网络浏览器,它在2008年首次发布,并迅速成为全球最受欢迎的浏览器之一。本专题为大家提供chrome相关的文章、下载、课程内容,供大家免费下载体验。

830

2023.08.11

chrome无法加载插件怎么办
chrome无法加载插件怎么办

chrome无法加载插件可以通过检查插件是否已正确安装、禁用和启用插件、清除插件缓存、更新浏览器和插件、检查网络连接和尝试在隐身模式下加载插件方法解决。更多关于chrome相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

743

2023.11.06

edge是什么浏览器
edge是什么浏览器

Edge是一款由Microsoft开发的网页浏览器,是Windows 10操作系统中默认的浏览器,其目标是提供更快、更安全、更现代化的浏览器体验。本专题为大家提供edge浏览器相关的文章、下载、课程内容,供大家免费下载体验。

1412

2023.08.21

IE浏览器自动跳转EDGE如何恢复
IE浏览器自动跳转EDGE如何恢复

ie浏览器自动跳转edge的解决办法:1、更改默认浏览器设置;2、阻止edge浏览器的自动跳转;3、更改超链接的默认打开方式;4、禁用“快速网页查看器”;5、卸载edge浏览器;6、检查第三方插件或应用程序等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

381

2024.03.05

如何解决Edge打开但没有标题的问题
如何解决Edge打开但没有标题的问题

若 Microsoft Edge 浏览器打开后无标题(窗口空白或标题栏缺失),可尝试以下方法解决: 重启 Edge:关闭所有窗口,重新启动浏览器。 重置窗口布局:右击任务栏 Edge 图标 → 选择「最大化」或「还原」。 禁用扩展:进入 edge://extensions 临时关闭插件测试。 重置浏览器设置:前往 edge://settings/reset 恢复默认配置。 更新或重装 Edge:检查最新版本,或通过控制面板修复

935

2025.04.24

mysql标识符无效错误怎么解决
mysql标识符无效错误怎么解决

mysql标识符无效错误的解决办法:1、检查标识符是否被其他表或数据库使用;2、检查标识符是否包含特殊字符;3、使用引号包裹标识符;4、使用反引号包裹标识符;5、检查MySQL的配置文件等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

183

2023.12.04

Python标识符有哪些
Python标识符有哪些

Python标识符有变量标识符、函数标识符、类标识符、模块标识符、下划线开头的标识符、双下划线开头、双下划线结尾的标识符、整型标识符、浮点型标识符等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

286

2024.02.23

java标识符合集
java标识符合集

本专题整合了java标识符相关内容,想了解更多详细内容,请阅读下面的文章。

258

2025.06.11

俄罗斯Yandex引擎入口
俄罗斯Yandex引擎入口

2026年俄罗斯Yandex搜索引擎最新入口汇总,涵盖免登录、多语言支持、无广告视频播放及本地化服务等核心功能。阅读专题下面的文章了解更多详细内容。

31

2026.01.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.2万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.5万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号