【问题标题】:Calculating a date and time in another time zone计算另一个时区的日期和时间
【发布时间】:2015-11-07 06:33:45
【问题描述】:

这几天一直让我陷入困境。

应用程序使用 JavaScript。

我希望为另一个时区的观众显示一个时区的时间。

我会为我想要显示时间和日期的区域存储与 GMT 的时区偏移量(夏令时将考虑到偏移量)。

我计划将时间转换为 Epoch,然后添加或减去偏移量,然后转换为计算日期的 DD MM YYYY HH MM SS。

我已经到了只见树木不见森林的地步。关于如何实现这一点的任何想法。

【问题讨论】:

  • Date 的时间值已经是 UTC,所以只需使用 UTC 方法调整您想要的偏移量,然后读出 UTC 值。
  • 你试过moment.js吗
  • 欢迎来到 SO。请访问help center 了解如何在这里提问(提示:显示一些代码)
  • 你可以试试这个 => momentjs.com/timezone

标签: javascript date datetime


【解决方案1】:

由于日期基于 UTC 时间值,您只需调整所需的偏移量并读取 UTC 值,例如

/* @param {number} offset - minutes to subtract from UTC to get time in timezone
**
*/
function getTimeForOffset(offset) {
  function z(n){return (n<10?'0':'')+n}
  var now = new Date();
  now.setUTCMinutes(now.getUTCMinutes() - offset);
  return z(now.getUTCHours()) + ':' + z(now.getUTCMinutes()) + ':' + z(now.getUTCSeconds());
}

// Time for AEST (UTC+10)
console.log(getTimeForOffset(-600));

// Time for CEST (UTC+02)
console.log(getTimeForOffset(-120));

请注意,偏移量与 javascript Date 时区偏移量的符号相同,这与添加到 UTC 以获取本地时间的典型值相反。

【讨论】:

  • 感谢 RobG。这似乎正是我想要实现的目标。标准差
  • 划时代的FTW!这个答案通过转换 UTC 并从 UTC 组件构建结果来正确地做到这一点。许多其他人通过改变当地时间来错误地尝试这个。 :)
猜你喜欢
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
  • 2016-02-02
  • 1970-01-01
  • 2021-10-04
  • 1970-01-01
  • 1970-01-01
  • 2021-01-11
相关资源
最近更新 更多