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

如何从toTimeString()返回结果中移除时间部分?

嗨,看到你最后用substring方法简化代码搞定了问题,真不错!刚好我可以给你梳理几种不同的实现思路,方便以后遇到类似场景参考~

先回顾下你的场景:
你原本用这段代码:

var d = new Date(); 
var region = "**Region** - `" + d.toTimeString();

得到的结果是:

**Region** - `09:39:43 GMT+1000 (AUS Eastern Standard Time)`

想要移除前面的时分秒部分,只保留GMT+1000 (AUS Eastern Standard Time)这部分内容。

1. 你现在用的substring方法(最简洁高效)

因为toTimeString()返回的格式是固定的,时分秒后必然跟着空格,后面就是时区信息。所以直接找到第一个空格的位置,截取后面的内容就行:

var d = new Date();
var timeStr = d.toTimeString();
// 定位第一个空格,截取其后的所有内容
var timezonePart = timeStr.substring(timeStr.indexOf(' ') + 1);
var region = "**Region** - `" + timezonePart;

运行后就能得到你想要的结果:

**Region** - `GMT+1000 (AUS Eastern Standard Time)`

这种方法完全不需要复杂逻辑,确实是最适合你的方案。

2. 之前提到的正则表达式方法

如果想用正则来实现,也有几种写法:

  • 匹配第一个空格之后的所有内容:
var d = new Date();
var timeStr = d.toTimeString();
var timezonePart = timeStr.match(/\s(.*)/)[1];
var region = "**Region** - `" + timezonePart;
  • 更精准地匹配GMT开头的部分:
var timezonePart = timeStr.match(/GMT.*$/)[0];

这两种正则方式也能达到效果,但确实不如substring简洁。

3. 进阶:直接获取时区信息

如果你以后需要更灵活地处理时区,还可以试试这些方法:

  • 获取时区偏移量:d.getTimezoneOffset(),不过注意这个返回的是与UTC的分钟差,符号和GMT标注相反(比如GMT+1000对应返回-600),需要转换后再拼接格式。
  • 获取时区名称:部分浏览器支持d.toLocaleTimeString('en', {timeZoneName: 'long'}),但返回格式可能因浏览器不同有差异,需要额外处理。

不过对你当前的需求来说,substring方法已经足够完美啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:19:39