当我返回客户端时收到日期和时间(来自时间戳中的字段)时如何停止,它会自动计算时区(GMT -5)。例如,如果在数据库中我有 00:05:32(小时、分钟和秒格式),当我在客户端显示它时,它显示我 05:05:32(因为我在秘鲁,这里是 GMT -5 ) 我期待你的评论。
[编辑]
我正在使用 socket.io 从 Node 发送数据。
在我的数据库中:
2016-10-31 00:05:10
在 Javascript 中,我使用:
new Date(Date.parse(obj.hora_inicio)).toUTCString()
这让我回想起:
“格林威治标准时间 2016 年 10 月 31 日星期一 15:18:45”
好吧,我认为事情正在变得更糟,对吧?我真的很困惑。
不幸的是,JavaScript 的这种行为不能(本机)改变,原因是 JavaScript 默认只有一种处理日期/时间的方式(可以这么说)。
发生的事情只是 Javascript 查看时间变化,计算日期和时间,然后向操作系统询问该时间戳在本地时区的表示。
操作系统提供了显示本地时区时间的服务,而不是其他时区的时间。为此,您必须考虑诸如夏季时间之类的事情...
与时间管理一样,处理此问题的唯一体面方法是使用专用库。在 Javascript 中,我们有Moment.js和Moment.Timezone.js,这是一个可以解决时区冲突问题的库。
我给你举个例子:
有趣的是,如果您需要发送到其他时区,您可以轻松完成,就像使用Moment.JS中的各种选项制作格式一样
正如我们在秘鲁所说:“De yapa”(参考:添加一些额外的东西)
该库使用ISO 8601 标准,其中日期可以设置为精确时间(例如时区变化 +/- 1 小时),因此可以显示在任意多个时区中。