看起来像微软在the invisible left-to-right mark滑倒。这也发生在边缘模式下的IE11中。我想通了这一点通过每个字符串中的字符循环并将它传递给encodeURIComponent()
var output = document.getElementById("output");
var testi = new Date().toLocaleTimeString();
var row;
for (var i = 0, len = testi.length; i < len; i++) {
row = document.createElement("pre");
row.innerHTML = encodeURIComponent(testi[i]);
output.appendChild(row);
}
<div id="output"></div>
你可以通过它的Unicode,可以在正则表达式被捕捉移除它剥离出来表达式\u200E
。
var output = document.getElementById("output");
var testi = new Date().toLocaleTimeString().replace(/\u200E/g,"");
var row;
for (var i = 0, len = testi.length; i < len; i++) {
row = document.createElement("pre");
row.innerHTML = encodeURIComponent(testi[i]);
output.appendChild(row);
}
<div id="output"></div>
你为什么想上的toLocaleString的结果时,你可以提取日期对象的任何部分字符串操作? – marekful
我的目标是面对09:30 AM格式的时间字符串,我不想24小时进行AM/PM和时区转换,所以我将toLocaleTimeString()的秒数导致我发现这个JavaScript错误(quirk?)这是一些较老的代码,只有少数用户升级到我们刚开始看到的Windows 10。在IE,Chrome和Firefox中工作良好 – Aaron