日期时区转换socket.io
我在写如何使用Node.js和socket.io一个聊天程序。当用户发送消息时,我想在它们发送它要发射的时间。相反,日期数据,谁送的人的时区是的,不过,我想它转换成相应的recievers的时区。将JavaScript的照顾这个自动,或者是它的东西,我需要解决?
socket.emit('chat', {
message: 'message',
date: new Date()
}
回答如下:
你可以简单地从Date
发送UTC值回您的服务器并备份到另一个客户端。即使他们有不同的时区,本地客户端会显示Date
当从UTC值,该时区转换。
重要的是,日期作为UTC,而不是在本地时间区域。
- 这可以是一个整数(这将是因为1/1/1970 UTC毫秒),从
.getTime()
获得。所有浏览器都支持这一点,但它不是一个非常人性化的可读格式。 - 它也可以是在UTC ISO8601 / RFC3339格式,如
2013-06-26T15:40:00Z
一个字符串,其可以通过.toISOString()
获得。
你不能做的仅仅是直接传递Date
对象,因为您在样本中显示。 Socket.io只会调用.toString()
就可以了。这最终会发送一个人类可读的RFC822格式的字符串与本地时区 - 而不是你想要的UTC值。