You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

现代JavaScript中如何更简便地获取指定时区的当前小时数?

获取指定时区当前小时数的简化实现

需求明确:

  • 获取「Europe/London」时区的当前小时数(如时间为13:45时返回13)
  • 不受用户本地时区影响
  • 仅兼容现代浏览器,不支持该时区时通过try/catch捕获异常(渐进式增强)

你当前的实现代码:

const timeZone = "Europe/London"
const dateTimeFormat = new Intl.DateTimeFormat("en-GB", { timeZone, hour: "numeric" })
const hour = parseInt(dateTimeFormat.formatToParts(new Date)[0].value, 10)

更简便的写法

可以直接使用Date.prototype.toLocaleTimeString,无需借助formatToParts提取数据,逻辑更直观:

const timeZone = "Europe/London";
try {
  const hour = Number(new Date().toLocaleTimeString('en-GB', {
    timeZone,
    hour: '2-digit',
    hour12: false // 强制24小时制,避免12小时制格式干扰转数字
  }));
  // 此处可使用hour变量,比如输出或后续逻辑
} catch (e) {
  // 浏览器不支持该时区时,按需求忽略异常
}

写法优势

  1. 更简洁直观:直接通过toLocaleTimeString指定时区和小时格式,拿到小时字符串后转数字,省去了创建Intl.DateTimeFormat实例和提取数组元素的步骤
  2. 更可靠:添加hour12: false确保返回的是24小时制的纯数字字符串(比如"13"而非"1 PM"),避免解析错误
  3. 符合渐进式增强:用try/catch包裹核心逻辑,不支持指定时区的浏览器会自动跳过,不影响基础功能

内容的提问来源于stack exchange,提问作者Henrik N

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 08:56:08