以下功能适用于Chrome,FF和IE11。但是我不能让它在IE 10上工作。当我尝试拆分返回的字符串时,split返回undefined。
这是我的功能:
var now = new Date(), timezoneOffset;
timezoneOffset = now.toString().split('GMT')[1];
timezoneOffset = timezoneOffset.split(' ')[0];
timezoneOffset = timezoneOffset.substr(0, 3) + ':' + timezoneOffset.substr(3, 2);
return timezoneOffset;
因此返回的值为:(根据您的位置可能会有所不同)
在小提琴上,您可以在timezoneOffset = now.toString().split('GMT')[1];
之后发出提醒以查看IE10上的错误
答案 0 :(得分:6)
你做出now.toString()
包含"GMT"
的错误假设,让我们看看IE中实际给出的内容(无论如何);
"Tue May 6 13:48:08 UTC+0100 2014"
请注意 GMT ,但 UTC 。
这意味着split_result[1]
未定义,因此timezoneOffset
未定义,因此您的错误
Unable to get property 'split' of undefined or null reference
这不是获取时区偏移量的最佳方式,因为我们已经提供了一种方法
date.getTimezoneOffset(); // offset in minutes i.e. for me it is -60
现在您可以将此数字转换为所需的格式;
var o = date.getTimezoneOffset();
var x = Math.abs(o),
sign = (x === o ? '-' : '+' ),
m = x % 60,
h = (x - m) / 60;
m = (m < 10 ? '0' : '') + m;
h = (h < 10 ? '0' : '') + h;
return sign + h + ':' + m;