我需要找到特定时区的偏移量。我怎么能用瞬间做到这一点?
假设我的客户端时区是MST,我想找到EST时区偏移量。我需要在不考虑夏令时的情况下获得标准偏移量。
使用moment.tz("America/Edmonton").format('Z')
我得到-6:00
,但这会考虑夏令时。我想要的东西给我-7:00
,因为它是标准偏移量。
答案 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');
}