【发布时间】:2017-02-06 00:47:08
【问题描述】:
我正在制作信使,我需要在用户时区显示消息时间。目前,由于时区,我与服务器消息和客户端消息的时间不同。
当在客户端创建消息时 datetime 字段等于 new Date():
function Message(sender) {
...
this["datetime"] = new Date();
...
当从服务器收到消息时,日期时间字段是来自服务器的 ctime。此代码显示消息时间:
chatMessageTime.innerHTML = new Date(message["datetime"]).toLocaleString("ru", {
"hour": "numeric",
"minute": "numeric"
});
正如我之前所说,因此我在不同的时区有时间。如何解决这个问题呢?如何显示所有消息的用户时区?
【问题讨论】:
-
那么服务器是在不同时区存储时间,还是你将它们全部转换为服务器时间之前?
-
@Zze 服务器以 unix 时间格式存储日期时间。
-
@charlietfl 那么是服务器问题吗?服务器是否应该以 UTC 而不是 Unix 时间格式存储日期时间?
-
@AlexanderShpindler:Unix 时间格式(只要您正确执行)被定义为 UTC。但是,如果您进行任何转换,那么您有责任正确完成转换。
-
不要相信客户端时间设置,它可以是任何东西。对所有内容使用服务器时间并保持 UTC。仅在客户端上转换为“本地”并且仅用于显示目的。或许见Convert UNIX timestamp to date time。
标签: javascript datetime time timezone localtime