比较客户端和服务器时间

时间:2014-11-13 22:12:13

标签: javascript node.js datetime timezone

我有一个Node.js服务器,它会查询API以接收这样的一组时间:

{
  "end": "2014-05-24T14:00:00.000Z",
  "start": "2014-05-24T11:00:00.000Z"
}

客户端的浏览器向服务器发出AJAX GET请求,以ms为单位传递客户端的本地时间:

// ajax code
data: { localTime: (new Date()).getTime() }
// more ajax code

我希望与服务器接收的时间进行比较,并检查它是否位于API事件定义的时间间隔内。

API返回的数据定义东海岸的事件,当我将这些字符串传递给Date构造函数时,它们被解析为东部时区。

问题出现是因为夏令时节省,以及客户可能处于与服务器或EST不同的时区。

我试图将所有时间转换为相同的时区变得非常困惑,所以我真的不确定如何以最可靠的方式进行此操作。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可能不想使用(new Date()).getTime()

您可以考虑使用new Date().toISOString(),它会返回与您的endstart格式相同的字符串。

这是一个可运行的例子:



var times = {
  "start": "2014-11-11T11:11:11.000Z",
  "end": "2014-12-12T12:12:12.000Z"
}

var data = {
  localTime: new Date().toISOString()
}

if (new Date(data.localTime) > new Date(times.start) && new Date(data.localTime) < new Date(times.end))
  document.body.innerHTML = "Client time is within the interval";
else
  document.body.innerHTML = "Client time is not within the interval";
&#13;
&#13;
&#13;