gpt4 book ai didi

javascript - JS split() 在 IE10 及以下版本出错

转载 作者:行者123 更新时间:2023-11-28 12:29:33 28 4
gpt4 key购买 nike

以下函数在 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(东部夏令时间)
  2. timezoneOffset(第一次分割后)= +0300 (EEST)
  3. timezoneOffset(第二次分割后)= +0300
  4. timezoneOffset(在 substr 后并添加冒号)= +03:00

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

JSFiddle

最佳答案

您错误地假设 now.toString() 包含 "GMT",让我们看看 IE 中实际给出的内容(无论如何对我来说);

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

注意,不是GMT,而是UTC

这意味着 split_result[1]未定义,因此 timezoneOffset未定义,因此您的错误 p>

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;

关于javascript - JS split() 在 IE10 及以下版本出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23495028/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com