繁体   English   中英

IE10及更低版本中的JS split()错误

[英]JS split() error in IE10 and below

以下功能在Chrome,FF和IE11上正常运行。 但是,我无法在IE 10上使用它。当我尝试拆分返回的字符串时,拆分返回未定义。

这是我的功能:

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;

因此返回的值是:(根据您所在的位置,它可能会有所不同)

  1. 现在= 2014年5月6日星期二15:31:03 GMT + 0300(EEST)
  2. timezoneOffset(第一次分割后)= +0300(EEST)
  3. timezoneOffset(第二次分割后)= +0300
  4. timezoneOffset(在substr和加冒号之后)= +03:00

小提琴可以在timezoneOffset = now.toString().split('GMT')[1];之后发出警报timezoneOffset = now.toString().split('GMT')[1]; 查看IE10上的错误

JSFiddle

您正在做出一个错误的假设,即now.toString()包含"GMT" ,让我们看看IE中实际给出的(无论如何对我来说);

"Tue May 6 13:48:08 UTC+0100 2014"

注意不是格林尼治标准时间 ,而是UTC

这意味着split_result[1]undefined ,所以timezoneOffsetundefined ,因此是您的错误

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM