将 JavaScript 日期对象发送到服务器而不调整时区差异



有没有办法将数据从客户端发送到服务器,而无需调整时间以考虑客户端和服务器之间的时区差异?

我有一个带有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 的。

这是另一个关于如何自己获得正确偏移量的堆栈溢出问题。

最新更新