# 允许修改时区文本（尤其是在活动中）

**URL:** <https://meta.discourse.org/t/allow-the-modification-of-timezone-text-especially-in-events/397080>\
**Category:** Feature\
**Tags:** events\
**Created:** [2026年二月26日 03:28 UTC](https://meta.discourse.org/t/allow-the-modification-of-timezone-text-especially-in-events/397080 "2026-02-26T03:28:07Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)\
**Post date:** [2026年二月26日 03:28 UTC](https://meta.discourse.org/t/allow-the-modification-of-timezone-text-especially-in-events/397080/1 "2026-02-26T03:28:07Z")

</div>

接续自 [🌍 新日历功能：显示本地时间](https://meta.discourse.org/t/new-calendar-feature-show-local-time/368608/5) 的讨论：

我们的站点几乎完全限制在我们的国家/地区内。

我们有一个特殊问题，我们的时区看起来像我们国家/地区内的某个特定地点，因此当它与紧随其后的地点字段一起显示时，可能会使用户感到困惑：

 ![image](https://global.discourse-cdn.com/meta/original/4X/8/2/a/82a74dca8a4d8b740f7a1a5f52060a04e5d2c5fe.png)

在这种情况下，（本地）活动将在距离奥克兰市约 1000 公里（在另一个城市）的一个著名的本地场所举行。其中包含（奥克兰）信息具有很大的误导性。

在链接的帖子中对此进行了一些讨论：

> [@sam](#):
>
> 活动已将本地时间固定（无需显示 CET）在活动上。

> [@j.jaffeux](#):
>
> 那么您如何知道它是本地时区呢？

> [@sam](#):
>
> 此功能和渲染仅在“显示本地时间”开启时有效。如果人们不想要，他们就不会勾选它。

> [@j.jaffeux](#):
>
> 是的，我知道，但最终用户不知道

能够在站点级别隐藏时区（尤其是在活动中）对于本地活动将非常有帮助，但看不到如何使用 CSS 来实现这一点——并且 [ask.discourse.com](http://ask.discourse.com) 也帮不上忙。

与此相关的是，能够将本地活动设置为默认值也会非常有帮助。

---

<div class="post-metadata">

**Author:** ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)\
**Post date:** [2026年二月26日 04:17 UTC](https://meta.discourse.org/t/allow-the-modification-of-timezone-text-especially-in-events/397080/2 "2026-02-26T04:17:05Z")

</div>

如果我理解正确：

- 只有在事件设置中启用了“显示本地时间”时，才会显示_事件_时区城市
- “显示本地时间”默认禁用

所以，我推断您有用户启用了“显示本地时间”，而您不希望这样。

如果隐藏“显示本地时间”设置，使其无法启用，怎么样？

```css
.event-field.show-local-time {
    display: none;
}

```

然后，新事件将显示用户_自己的_本地时间和“芝加哥”。（我没有看到隐藏城市的方法，因为它是由内容生成的。）  
例如，一个在菲尼克斯时间创建的事件将显示我_自己的_本地时间和“芝加哥”。

---

<div class="post-metadata">

**Author:** ![nathank](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/nathank/32/290039_2.png) [@nathank](https://meta.discourse.org/u/nathank)\
**Post date:** [2026年二月27日 04:20 UTC](https://meta.discourse.org/t/allow-the-modification-of-timezone-text-especially-in-events/397080/3 "2026-02-27T04:20:27Z")

</div>

感谢您对此事的考虑和建议，Todd！

> [@ToddZ](#):
>
> 所以我的理解是，您的用户启用了“显示本地时间”功能，而您不希望这样。

不完全是——这不是问题所在。时间是本地时间还是用户时间（在大多数情况下是相同的）实际上并不重要。  
问题在于我们特定的时区包含的文本具有误导性（它是新西兰唯一的时区）。这对您也适用：在您上面的示例中，它暗示活动将在芝加哥的小溪（Little Creek）举行。

我正在尝试实现这个效果：

 ![image](https://global.discourse-cdn.com/meta/original/4X/b/7/c/b7c170375d1dac20c4e596c3f1adb0e05ad03199.png)

好吧，在对着“vibe coding”的墙撞了几次头之后，我在本地主题组件的 JS 标签中加入了这段 JavaScript 代码，它为我解决了问题：

```js
import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("swap-auckland-for-nz", (api) => {
  function swapTimezones(root = document) {
    root.querySelectorAll('.relative-time').forEach(elem => {
      if (elem.textContent && elem.textContent.includes('(Auckland)')) {
        elem.textContent = elem.textContent.replace('(Auckland)', '(NZ)');
      }
    });
  }

  api.onPageChange(() => {
    swapTimezones(document);

    // 设置持久的突变观察器以实现动态事件/日历输出
    const observer = new MutationObserver(() => {
      swapTimezones(document);
    });

    observer.observe(document.body, { childList: true, subtree: true });

    // 可选地，在其他导航事件后也再次运行
    window.addEventListener("hashchange", () => swapTimezones(document));
    window.addEventListener("popstate", () => swapTimezones(document));
  });
});

```

如果我有时间，我会将其打包成一个可安装的主题组件，以便其他人可以根据需要使用它。

---

<div class="post-metadata">

**Author:** ![ToddZ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/toddz/32/328350_2.png) [@ToddZ](https://meta.discourse.org/u/ToddZ)\
**Post date:** [2026年二月27日 04:42 UTC](https://meta.discourse.org/t/allow-the-modification-of-timezone-text-especially-in-events/397080/4 "2026-02-27T04:42:19Z")

</div>

我没意识到新西兰只有一个时区，但等我办完事回来时，我觉得你的问题需要用到 JavaScript。很高兴你找到了一个 JS 解决方案！
