【问题标题】:Get time diffrence between local and remote time获取本地时间和远程时间之间的时差
【发布时间】:2014-12-02 15:57:44
【问题描述】:

是的,我知道数以千计的类似问题,但我的大脑正试图爆炸,我请求你帮助。 看了很多文章还是一头雾水。

这就是我所拥有的。

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)

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

【问题讨论】:

标签: javascript datetime timezone


【解决方案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>

【讨论】:

  • next_market_event_in_NewYork - 现在不是 UTC 时间。现在是纽约当地时间((
  • 您的 sn-p 向我显示,距离纽约 16:00 还剩 -14800 秒。但是现在才13:00....
  • 这不适应夏令时。纽约在冬季仅比世界标准时间晚 5 小时。在夏天,晚了 4 个小时。
  • @MattJohnson 是的,我在答案中指出,并说最好在服务器端计算该值,OP 似乎有办法这样做。
  • 我无法计算服务器端的偏移量...我确实知道每个市场与莫斯科的偏移量以及莫斯科与伦敦的偏移量,如问题所示。请帮助我了解如何让 msNYtoUTC 知道这一点
【解决方案2】:

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

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

【讨论】:

  • 我知道moment.tz,但实际上我不知道特定市场的时区。在我的问题中,我自己假设它是纽约,但服务器给我的不是时区——它是从莫斯科(甚至不是伦敦)的市场偏移。
  • 我很困惑。你首先说服务器给了你到莫斯科伦敦的偏移量。现在你说只有莫斯科?服务器是否考虑到莫斯科最近从 UTC+4 到 UTC+3 的转变?当你说伦敦时,你指的是格林威治标准时间吗?或者您是否考虑到伦敦在冬季是 GMT (UTC+0) 而在夏季是 BST (UTC+1)?我是否正确理解您真的不知道市场在哪个时区并且有多个市场?我不确定你希望我们如何猜测。能具体点吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 2021-03-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
  • 2014-06-11
  • 1970-01-01
相关资源
最近更新 更多