当有人试图在使用" Locale"的日期函数上使用字符串函数时,有人可以解释为什么IE有错误吗?我认为它与角色的编码有关。
在IE和Chrome中检查jsFiddle,你会发现在Chrome中我们得到4(正确的索引)而在IE中我们得到8.这是否与ascii与unicode有关?如果是这样,这应该是IE中的错误吗?
var date = new Date();
var str = date.toLocaleTimeString();
jQuery('#a').text(str);
jQuery('#b').text(str.lastIndexOf(":"));
str = date.toTimeString();
jQuery('#c').text(str);
jQuery('#d').text(str.lastIndexOf(":"));
IE 11 jsFiddle输出的屏幕截图
答案 0 :(得分:1)
Here's a modified fiddle.无论出于何种原因,IE 11字符串中都嵌入了一堆额外的Unicode“从左到右标记”字符。
我添加的代码是
var s = '';
for (var i = 0; i < str.length; ++i)
s += str.charCodeAt(i) + ' ';
$('#c').text(s);
和其他<h4>
一样。
答案 1 :(得分:1)
根据定义,Date.toLocaleTimeString()
根据用户的偏好/默认值生成输出。
因此,结果(:
的位置)可能会因不同平台,区域设置甚至一天中的时间而异。
这就是韩国时间的例子:
"오후 12:00:00"
显然,在您的情况下,Chrome和IE对默认的区域设置格式有不同的看法。
如果你有任何代码依赖于:
在toLocaleTimeString()中的位置,那么它必须被重构为更可靠的东西。
在某些语言环境/设置中,toLocaleTimeString()可能根本不包含:
。