0

0

利用JavaScript Intl API 获取标准时区名称列表

聖光之護

聖光之護

发布时间:2025-10-29 11:45:19

|

950人浏览过

|

来源于php中文网

原创

利用javascript intl api 获取标准时区名称列表

本文旨在解决在从Moment.js迁移到Day.js后,如何高效获取一份简洁的时区名称列表的问题。我们将介绍并演示如何利用浏览器原生的`Intl.supportedValuesOf('timeZone')` API来获取标准IANA时区标识符。该方法无需额外库,且能自动处理夏令时,提供了一个专业且易于实现的解决方案,尤其适用于需要精简时区列表的场景。

Day.js与时区列表的挑战

在进行日期和时间处理时,获取并管理时区信息是常见的需求。许多开发者曾习惯于使用Moment.js及其配套的moment-timezone插件,通过moment.tz().names()等方法轻松获取完整的时区名称列表。然而,随着Moment.js进入维护模式,以及Day.js等更轻量级库的兴起,开发者逐渐转向新的解决方案。

Day.js自身的核心库设计旨在保持精简,它专注于日期时间对象的创建、操作和格式化。虽然Day.js通过其timezone插件可以处理特定时区的日期时间,但它本身并不提供直接获取所有可用时区名称列表的功能。这导致了一个常见问题:如何在不依赖Moment.js的情况下,获取一个简洁且包含夏令时(DST)变化的有效时区名称列表?

Intl.supportedValuesOf('timeZone'):现代JavaScript解决方案

对于获取时区名称列表的需求,现代JavaScript提供了一个强大且标准的原生API:Intl.supportedValuesOf('timeZone')。这个方法是Intl对象(Internationalization API)的一部分,它允许应用程序访问宿主环境(通常是浏览器或Node.js)支持的各种国际化数据。

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

Intl.supportedValuesOf('timeZone')方法返回一个包含所有受支持的IANA时区标识符(也称为TZ database名称)的数组。这些标识符是全球公认的标准,例如"America/New_York"、"Europe/London"、"Asia/Shanghai"等。它们不仅代表了特定的地理区域,而且这些区域内部的夏令时规则(如果适用)也已被这些标识符隐含地涵盖。这意味着,通过获取这些标识符,您无需担心手动处理夏令时变化。

实现代码示例

要在浏览器环境或支持Intl API的Node.js环境中获取时区名称列表,您可以使用以下简洁的代码:

/**
 * 获取浏览器支持的IANA时区名称列表。
 * 这些名称是标准化的,并自动处理夏令时。
 *
 * @returns {string[]} 一个包含所有支持时区名称的数组。
 */
function getSupportedTimezoneNames() {
  if (typeof Intl !== 'undefined' && typeof Intl.supportedValuesOf === 'function') {
    return Intl.supportedValuesOf('timeZone');
  } else {
    console.warn("当前环境不支持 Intl.supportedValuesOf('timeZone') API。");
    return [];
  }
}

// 在控制台打印所有时区名称
const timezoneList = getSupportedTimezoneNames();
console.log("支持的时区名称列表:");
timezoneList.forEach(timeZone => {
  console.log(timeZone);
});

// 如果只需要在控制台快速查看,可以直接使用以下代码:
// for (const timeZone of Intl.supportedValuesOf('timeZone')) {
//   console.log(timeZone);
// }

将上述代码片段在您的浏览器控制台中运行,或者在支持的环境中作为JavaScript代码执行,您将获得一个包含数百个标准时区标识符的列表。这个列表是经过精简和标准化的,符合许多应用场景对“短小精悍”列表的需求。

Chromox
Chromox

Chromox是一款领先的AI在线生成平台,专为喜欢AI生成技术的爱好者制作的多种图像、视频生成方式的内容型工具平台。

下载

优势与注意事项

  1. 原生支持,无需依赖: 这种方法直接利用了浏览器或Node.js环境内置的国际化API,无需引入任何第三方库(如moment-timezone或Day.js的任何特定插件)即可获取时区列表。这有助于减小项目体积并减少外部依赖。

  2. 标准化和准确性: 返回的IANA时区标识符是国际公认的标准,它们在准确性和维护性方面具有高度可靠性。

  3. 自动处理夏令时: IANA时区标识符本身就包含了其所代表区域的所有历史和未来的夏令时规则。因此,您无需额外逻辑来考虑夏令时变化。

  4. 简洁性: 相较于某些库可能提供的冗余或非标准的时区名称,Intl.supportedValuesOf('timeZone')返回的列表是规范且易于理解的。它避免了提供500多个可能包含别名或旧名称的庞大列表,而是聚焦于核心的、可用的时区。

  5. 与Day.js的结合: 尽管Day.js本身不提供此列表,但一旦您通过Intl.supportedValuesOf获取了这些时区名称,您可以将它们与Day.js的timezone插件结合使用,例如:

    // 假设您已经安装并使用了dayjs和timezone插件
    // import dayjs from 'dayjs';
    // import utc from 'dayjs/plugin/utc';
    // import timezone from 'dayjs/plugin/timezone';
    // dayjs.extend(utc);
    // dayjs.extend(timezone);
    
    // const newYorkTime = dayjs().tz("America/New_York");
    // console.log(newYorkTime.format());

    您可以使用getSupportedTimezoneNames()返回的任何一个名称作为tz()方法的参数。

总结

在从Moment.js迁移到Day.js后,若需要获取一个简洁且包含夏令时规则的时区名称列表,最专业和高效的方法是利用JavaScript的Intl.supportedValuesOf('timeZone') API。这个原生方法提供了标准化的IANA时区标识符,无需额外库,且能够自动处理夏令时,完美满足了对精简、准确时区列表的需求。它不仅是一个独立的解决方案,也能很好地与Day.js等现代日期时间库协同工作。

热门AI工具

更多
DeepSeek
DeepSeek

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

豆包大模型
豆包大模型

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

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

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

文心一言
文心一言

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

讯飞写作
讯飞写作

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

即梦AI
即梦AI

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

ChatGPT
ChatGPT

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

相关专题

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

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

210

2023.12.04

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

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

322

2024.02.23

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

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

292

2025.06.11

c++标识符介绍
c++标识符介绍

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

178

2025.08.07

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

530

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

576

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

6228

2023.08.17

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

热门下载

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

精品课程

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

共58课时 | 6万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 3.4万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

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

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