【问题标题】:Can I set the local timezone in my browser via Javascript?我可以通过 Javascript 在浏览器中设置本地时区吗?
【发布时间】:2026-02-13 13:05:01
【问题描述】:

我知道我可以通过 new Date().getTimeZoneOffset() 获取本地时区偏移量。但是 Javascript 是从哪里得到这些信息的呢?有没有办法可以设置它,以便所有未来的 Date 对象都有我想要的偏移量?我尝试在 Firebug 中搜索 DOM,但找不到任何东西。

我想要完成的是将纪元时间转换为可读格式,但无论浏览器的操作系统设置如何,它都必须位于美国/中部。因为我使用的是 US/Central,所以它与 GMT 的差异不是固定的。因此,我为什么不能告诉 Javascript 我实际上在美国/中部,而不是一堆超级讨厌的转换步骤?

【问题讨论】:

  • 可能涉及到几个“讨厌的转换步骤”,但您不能将这些步骤封装在自己的 GetUSCentralDate() 函数中,然后在需要新的 Date 对象时使用它吗?

标签: javascript timezone


【解决方案1】:

我知道我可以通过 new Date().getTimeZoneOffset() 获取本地时区偏移量。但是 Javascript 是从哪里获得这些信息的呢?

An implementation of ECMAScript is expected to determine the local time zone adjustment.

有没有办法设置它,以便所有未来的 Date 对象都有我想要的偏移量?

没有。

所以,我为什么不能告诉 Javascript 我实际上在美国/中部,而不是一堆超级讨厌的转换步骤?

您是否考虑过使用a library

【讨论】:

  • TimezoneJS.Date 库依赖于不再可用的 Olson 时区数据库文件。似乎没有其他 Javascript 日期库具有这种功能。
  • 现在一个更好、更实际的库,对于 OP 用例(以及许多其他用例)正在使用时刻时区,如此处的另一个答案中所述。
【解决方案2】:

目前,Moment-Timezone 使我们能够使用moment.tz.setDefault() 设置“浏览器”的默认时区。

您必须使用 moment() 而不是 Date(),但这仍然是对奇怪的 JS Date 对象的一个​​很好的升级。

【讨论】:

  • 您应该考虑改用其他库,moment.js 也建议这样做(在文档中)
【解决方案3】:

我知道这是一篇旧帖子,但 momentJS 是一个强大的 JavaScript 库,可以操作日期/时间对象

【讨论】:

  • 您应该考虑改用其他库,moment.js 也建议这样做(在文档中)
最近更新 更多