1

我有一个 javascript 日期,如下所示,即“现在”加上 20 分钟:

var end = new Date('04/14/2013 14:00');

到目前为止,它正在倒计时脚本中使用(交付 ETA)。

然而,这依赖于客户端机器来计算倒计时应该何时完成,这可能不是格林威治标准时间或格林威治标准时间 +1 夏令时。

我在这里查看了 UTC 方法http://www.w3schools.com/jsref/jsref_utc.asp,但坦率地说迷路了。

所以我的问题是:

如何调整变量end以解决 GMT 与其在客户端机器上的本地设置之间可能存在的时差,以便它可以信任?

注意:“可信”在这里是一个强词,也许“更可能是准确的”可能会更好:) 这需要纯 JS 而不是 jQuery。

马特

4

2 回答 2

1

我查看了 UTC 方法,但坦率地说迷路了。

不,使用该Date.UTC功能很好,而且要走的路。在你的情况下,这将是

var end = new Date(Date.UTC(2013, 3, 14, 14, 0)); // notice months are zero-based

当然,您可以直接使用自纪元以来的毫秒数,特别是如果您动态生成日期值:

var end = new Date(1365948000000);
于 2013-04-14T13:46:18.520 回答
0

这也许不能直接回答这个问题,也许我错过了一些东西,但看起来你还是把问题复杂化了——如果你使用日期作为倒数计时器的一部分,那么你必须始终知道偏移量是多少(倒计时)是在任何特定的时刻。

由于Date如果您不将任何参数传递给构造函数,总是返回本地时间,为什么不只根据您的偏移量来确定您的“结束”日期客户端。例如。

var offset = 1000*60*20; // 20 minutes (in milliseconds)
var end = new Date( new Date().getTime() + offset );

这样您就无需担心当地时区甚至 DST。

于 2013-04-14T15:34:57.623 回答