通过使用 HTTP 请求如何获取非 UTC 格式的服务器时区

By using HTTP request how to get server's timezone not in UTC format

我服务器的机器时区是 HST 格式。当我尝试使用 JavaScript 中的 HTTP 请求获取时区时,它以 UTC 格式提供给我。有没有办法获取服务器的时区。

几件事:

  • 切勿依赖服务器的时区设置为任何特定的内容。它可以很容易地更改,或者您可能只是想将您的服务器移动到其他地方。两者都不应该影响您的数据。
  • HTTP header 只会给你 UTC/GMT 中的时间。 HTTP 规范的这一部分,在 RFC7231 section 7.1.1.1 and 7.1.1.2.
  • 客户端对服务器的时区一无所知,除非你特意自己发送。由于前两点,无论如何都不应该需要,或者应该在极少数情况下使用。
  • 服务器也不知道客户端时区。如果你想在客户端本地时间显示服务器时钟的值,你有两个选择:
  1. 将UTC时间发送给客户端,并使用JavaScript将UTC时间转换为本地时间。 JavaScript Date object 就足够了,但您可能还会发现像 Moment.js 和其他有用的库。

  2. 通过其他方式(询问用户或猜测)确定客户端的本地时区。有关详细信息,请参阅 this answer。获得时区 ID(例如 America/Los_Angeles 等)后,请在 server-side 上使用它。只有在 server-side 上需要进行大量 date/time 操作时,此方法才有用。如果您只是简单地转换为当地时间显示,请选择选项 1。