【问题标题】:Comparing client and server times比较客户端和服务器时间
【发布时间】:2014-11-13 22:12:13
【问题描述】:

我有一个 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 位于不同的时区,因此出现问题。

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

非常感谢任何帮助!

【问题讨论】:

    标签: javascript node.js datetime timezone


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-09
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多