比较客户端和服务器时间

Comparing client and server times

本文关键字:时间 服务器 客户端 比较      更新时间:2023-09-26

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

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

客户端的浏览器向服务器发出 AJAX GET 请求,传入客户端的本地时间(以毫秒为单位):

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

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

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

出现此问题的原因是夏令时,以及客户端可能与服务器或 EST 位于不同的时区。

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

任何帮助将不胜感激!

您可能不想使用(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";