我的服务器的机器时区为HST格式。当我尝试通过在JavaScript中使用HTTP请求来获取时区时,它以UTC格式给了我。有什么方法可以获取服务器的时区。
几件事:
- 切勿依靠服务器的时区将其设置为尤其是任何内容。它可以很容易地更改,或者您可能只想将服务器移动到其他地方。要么不应影响您的数据。
- HTTP标头只会为您提供UTC/GMT的时间。HTTP规范的这一部分,在RFC7231第7.1.1.1和7.1.1.2节中
- 客户端对服务器的时区一无所知,除非您特别竭尽全力自己发送。由于前两个点,无论如何都不需要这一点,也不应在极少数情况下使用。
- 服务器对客户端时区也一无所知。如果要在客户端的本地时间内显示服务器时钟的值,则有两个选择:
-
将UTC时间发送给客户端,并使用JavaScript从UTC转换为当地时间。JavaScript
Date
对象足够了,但是您也可能会找到诸如Moment.js和其他有用的库。 -
通过询问用户或猜测来确定客户的本地时区。有关更多详细信息,请参见此答案。一旦您拥有时区ID(例如
America/Los_Angeles
等),请在服务器端使用它。只有在服务器端要执行大量日期/时间操作时,这种方法才有用。如果您只是简单地转换为当地时间进行显示,请选择选项1。