如何使用momemnt获得时区的标准偏移量

时间:2018-03-21 21:19:19

标签: timezone momentjs timezone-offset

我需要找到特定时区的偏移量。我怎么能用瞬间做到这一点?

假设我的客户端时区是MST,我想找到EST时区偏移量。我需要在不考虑夏令时的情况下获得标准偏移量。

使用moment.tz("America/Edmonton").format('Z')我得到-6:00,但这会考虑夏令时。我想要的东西给我-7:00,因为它是标准偏移量。

2 个答案:

答案 0 :(得分:1)

这样的事情怎么样?

function getStandardOffset(zone) {

  // start with now
  var m = moment.tz(zone);

  // advance until it is not DST
  while (m.isDST()) {
    m.add(1, 'month');
  }

  // return the formatted offset
  return m.format('Z');
}

getStandardOffset('America/Edmonton')  // returns "-07:00"

当然,这会返回当前标准偏移量。如果时区在过去使用过不同的标准偏移量,则需要从该范围开始,而不是“现在”。

答案 1 :(得分:1)

如果是永久DST时区,它将是一个无限循环,对吧? 所以我最终得到的代码是:

function getStandardOffset(zone) {

  // start with now
  var m = moment.tz(zone);

  // advance until it is not DST
  var counter = 1;
  while (m.isDST()) {
        m.add(1, 'month');
        if (counter > 12)
        {
            break;
        }
  }

  // return the formatted offset
  return m.format('Z');
}