【问题标题】:get client's GMT offset in javascript在 javascript 中获取客户端的 GMT 偏移量
【发布时间】:2014-08-21 10:18:40
【问题描述】:

如何在客户端的 javascript 中获取 GMT 偏移量?

new Date().getTimezoneOffset(); 返回与 UTC 的差值。有没有办法可以从中计算出 GMT 偏移量?

GMT 偏移量是指东部标准时间的 -5。

【问题讨论】:

  • 除非将 UTC 转换为 GMT,否则不能。
  • @DanielA.White 我该怎么做?在 JavaScript 中?
  • 是的 - 那里有图书馆。
  • 这个问题似乎离题了,因为 UTC GMT。
  • 我不同意结束这个问题。 OP 正在询问如何将 ECMAScript 时区偏移量转换为与 UTC 的 ISO 8601 格式偏移量。 explain the difference between UTC and GMT 然后回答问题要好得多(UTC 是时间标准,GMT 是时区,它们都代表相同的时间但不同的东西)。

标签: javascript time timezone timezone-offset


【解决方案1】:

new Date().getTimezoneOffset();返回与 UTC 的差值。有没有办法可以从中计算出 GMT 偏移量?

时区偏移与 GMT 的分钟差(请参阅ECMA-262 §15.9.5.26)。该符号与 ISO 8601 相反,但它很容易通过更标准的符号转换为小时和分钟:

function getTimezoneOffset() {
  function z(n){return (n<10? '0' : '') + n}
  var offset = new Date().getTimezoneOffset();
  var sign = offset < 0? '+' : '-';
  offset = Math.abs(offset);
  return sign + z(offset/60 | 0) + z(offset%60);
}

getTimezoneOffset() // +0800 for UTC/GMT + 8hrs

如果您想确定 IANA 时区指定,您可以尝试pellepim jstimezonedetect,但它是根据两个日期的偏移量来猜测的,可能不正确。

【讨论】:

  • 注意,根据使用情况,可能需要在偏移量的小时和分钟部分之间包含一个冒号字符 (`:')。在函数的最后一行轻松完成。
  • 这能处理像 xx:30 这样的情况吗?
  • 是的。返回的字符串包括符号、小时和分钟。
猜你喜欢
  • 1970-01-01
  • 2012-11-28
  • 1970-01-01
  • 2016-01-27
  • 2020-12-08
  • 2015-01-03
  • 2022-11-25
  • 1970-01-01
  • 2016-01-02
相关资源
最近更新 更多