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

时间:2017-07-12 03:14:06

标签: javascript angular date

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

我有一个带有nodejs服务器的角度应用程序。当我通过HTTP请求将表单中的日期发送到服务器并在服务器上记录日期时,日期将更改为服务器时区中的时间。

我想在不改变的情况下来回发送日期对象。

3 个答案:

答案 0 :(得分:1)

使用毫秒。

let now = new Date();
let time = now.getTime(); 

time始终包含UTC时区的毫秒数。在服务器中,您可以将毫秒转换为日期。这样你就不用担心时区了。

答案 1 :(得分:1)

在处理javascript日期时,我总是使用http://momentjs.com/。创建日期对象时,将使用系统时区,因此您始终必须调整偏移量。最简单的解决方案是执行以下操作之一

  • 使用字符串并解析它
  • 使用自定义格式的moment().format()
  • 在客户端和服务器上使用UTC
  • 使用ticks或unix epoch

确实没有一个很好的解决方案,你只需要保持一致。

答案 2 :(得分:1)

根据MDN,Javascript Date对象使用UTC构建。

您可以来回发送日期对象而无需更改日期对象,只需相对于使用它的“区域设置”进行解释。

如果您想维护本地日期和时间而不考虑位置(在不同的客户端和服务器位置之间),您可能需要传递Date的区域设置以及{{1本身。

执行此操作的方法是将Date格式化为ISO 8601格式的字符串,并带有时间偏移量(如+0100。) 这样你就可以获得每次使用的本地时间和偏移量。

您可以使用Date.prototoype.toISOString方法手动构建它,但仍然相对于UTC。

这是关于如何get the correct offset yourself的另一个Stack Overflow问题。