【问题标题】:How to convert an HTTP-date into a delay in milliseconds如何将 HTTP 日期转换为以毫秒为单位的延迟
【发布时间】:2014-08-19 11:30:15
【问题描述】:

我正在创建一个 Node.js 服务,该服务需要发出 HTTP GET 请求并在遇到 503 响应时重试它们。

来自 W3.org 的Header Field Definitions

Retry-After response-header 字段可以与 503(服务 不可用)响应以指示服务预计将持续多长时间 对请求的客户端不可用。 [...] 该字段的值 可以是 HTTP 日期或整数秒数(在 十进制)在响应时间之后。 [...] 两个使用示例 是

   Retry-After: Fri, 31 Dec 1999 23:59:59 GMT
   Retry-After: 120

我想使用此信息在适当的时间触发重试。这很容易用秒,因为我可以轻松地将它们转换为毫秒和setTimeout(fn, ms)。 HTTP-date 版本更难。我需要找到我服务器的时区,将提供的日期转换为该时区,从提供的时间中减去当前时间,将结果转换为毫秒,然后如果ms 为正值,则为setTimeout(fn, ms)

当然,我可以做到所有这些,但我希望已经存在一个库来做到这一点,因为这似乎是一件相当普遍的事情。但是,我似乎找不到一个。有线索吗?

【问题讨论】:

    标签: javascript date datetime timezone


    【解决方案1】:

    怎么样

    var d = new Date("Tue, 19 Aug 2014 13:50:59 GMT"); // d is in your timezone now
    d.setSeconds(d.getSeconds()+120);
    var diff = d.getTime()-Date.now();
    if (diff>0) var tId=setTimeout(something,diff);
    

    JSFIDDLE

    【讨论】:

    • 很简单。我不知道日期自动转换为本地时区。
    猜你喜欢
    • 1970-01-01
    • 2022-11-27
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多