在不同时区为客户端设置和显示事件时间

时间:2012-10-18 20:03:45

标签: timezone utc

我想知道处理时区的最佳方法是什么。

我们说user1已向user2

写了一条消息

现在user1位于UTC + 2user2位于UTC -2,假设服务器在UTC +1中设置时间

那么我如何处理时区的所有这些差异?

我正在编写jquery插件,它会在多久以前发生事情时更新时间,我最好的猜测是将服务器设置为UTC 0,然后根据客户端时区计算时差,但有没有办法获取客户时区,或者我是以错误的方式进行操作?

1 个答案:

答案 0 :(得分:2)

从上到下使用纪元时间(UTC + 00)并忽略时区。假设浏览器/ OS时区正确。这意味着发送和接收的每条消息都有一个时间戳,其形式为自纪元以来的毫秒数,使用new Date().getTime()生成。

我现在的时间是:

Thu Oct 18 2012 22:07:11 GMT+0200 (CEST)

或:

1350590831507

CEST是UTC + 02。在目标计算机(new Date(1350590831507)上使用UTC-0200)解释的后一种形式将是:

Thu Oct 18 2012 18:07:11 GMT-0200

但它仍然是相同的日期(时间点)!如果十秒后您将此时间戳与new Date().getTime()进行比较,则无论时区如何,总是获得10000毫秒。