有没有办法将数据从客户端发送到服务器,而无需调整时间以考虑客户端和服务器之间的时区差异?
我有一个带有nodejs服务器的角度应用程序。 当我通过HTTP请求将日期从表单发送到服务器并在服务器上记录日期时,日期将更改为服务器时区的时间。
我想来回发送日期对象而不更改它。
我在处理javascript日期时总是使用 http://momentjs.com/。创建日期对象时,将使用系统时区,因此您始终必须调整偏移量。最简单的解决方案是执行以下操作之一
- 使用字符串并解析它
- 将
moment().format()
与自定义格式结合使用 - 在客户端和服务器上使用 UTC
- 使用刻度或 Unix 纪元
真的没有一个很好的解决方案,你只需要保持一致。
使用毫秒。
let now = new Date();
let time = now.getTime();
time
始终包含 UTC 时区中的毫秒数。在服务器中,您可以将毫秒转换为日期。这样,您无需担心时区。
根据 MDN JavascriptDate
对象是使用 UTC 构造的。
您可以来回发送日期对象而无需更改它,它将简单地相对于使用它的"区域设置"进行解释。
如果要维护本地日期和时间而不考虑位置(在不同的客户端和服务器位置之间(,则可能需要传递Date
的区域设置以及Date
本身。
一种方法是将Date
格式化为 ISO 8601 格式的字符串,并带有时间偏移量(如 +0100(。 这样,您将获得本地时间和每次使用的偏移量。
您可以使用Date.prototoype.toISOString
方法手动构造它,但这仍然是相对于 UTC 的。
这是另一个关于如何自己获得正确偏移量的堆栈溢出问题。