获取本地和远程时间之间的时差

时间:2014-12-02 15:57:45

标签: javascript datetime timezone

是的,我知道成千上万的类似问题,但我的大脑正试图打击,我向你求助。 我读过很多文章而且还很困惑。

这就是我所拥有的。

var next_market_event_in_NewYork = "2014-12-02T16:00:00"; //that's what server gives me
var secondsFromMarketToMoscow = 28800; //that's also what server gives me
var secondsFromMoscowToLondon = 10800; //that's also what server gives me 
var secondsFromLocalToLondon = 7200; //that's what I get from local timeoffset new Date().getTimezoneOffset()*(-60)

我需要的是从现在开始到纽约的下一个活动还有多少秒。花了几十个小时。只是不知道如何得到答案。请帮助。

2 个答案:

答案 0 :(得分:1)

困难的部分是计算纽约时间和UTC之间的差异。如果您可以在服务器端执行此操作,则应该没有问题。如果你不能那么你就可以对偏移进行硬编码,但是当美国处于夏令时时会发生变化。

以下是NY和UTC之间硬编码5小时偏移的代码示例。

var next_market_event_in_NewYork = "2014-12-02T16:00:00";
var msNYtoUTC = 5 * 60 * 60 * 1000; //better to calculate this server-side
var nextEventDate = new Date(Date.parse(next_market_event_in_NewYork) + msNYtoUTC);

setInterval(function() {
  var localTime = new Date();
  var secondsRemaining = (nextEventDate - localTime) / 1000;
  document.getElementById("result").innerHTML = secondsRemaining.toFixed(0);
}, 1000);
<h1>
  <span id="result"></span>
  seconds until market event
</h1>

答案 1 :(得分:0)

如果您需要纯JavaScript解决方案,请考虑使用已经了解时区的库,例如moment.js添加了moment-timezone

var next_market_event_in_NewYork = "2014-12-02T16:00:00";
var m = moment.tz(next_market_event_in_NewYork, "America/New_York");
var now = moment();
var s = m.diff(now,'seconds');