Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将HTTP日期转换为以毫秒为单位的延迟_Javascript_Date_Datetime_Timezone - Fatal编程技术网

Javascript 如何将HTTP日期转换为以毫秒为单位的延迟

Javascript 如何将HTTP日期转换为以毫秒为单位的延迟,javascript,date,datetime,timezone,Javascript,Date,Datetime,Timezone,我正在创建一个Node.js服务,它需要发出HTTP GET请求,并在遇到503响应时重试 从W3.org的: 响应后重试标头字段可用于503(服务) 不可用)响应,指示服务的预期使用时间 对请求的客户端不可用。[…]此字段的值 可以是HTTP日期或整数秒数(以秒为单位) (十进制)在响应时间之后。[……]其使用的两个例子 是 我想使用此信息在适当的时间触发重试。这对于秒来说很容易,因为我可以轻松地将它们转换为毫秒和设置超时(fn,ms)。HTTP日期版本要难得多。我需要找到服务器的时区,将提供

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

从W3.org的:

响应后重试标头字段可用于503(服务) 不可用)响应,指示服务的预期使用时间 对请求的客户端不可用。[…]此字段的值 可以是HTTP日期或整数秒数(以秒为单位) (十进制)在响应时间之后。[……]其使用的两个例子 是

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

当然,我可以做到这一切,但我希望已经有一个图书馆可以做到这一点,因为这似乎是一件相当常见的事情。然而,我似乎找不到。有线索吗?

怎么样

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);

很简单。我不知道日期会自动转换成本地时区。
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);