的IE(微软边缘25.10)数组这是直接从控制台:IE Date.toLocaleTimeString()拆分未被返回一个字符串
greg = new Date().toLocaleTimeString().split(':')[0];
"12"
greg = new Date().toLocaleTimeString().split(':')[0]=="12";
false
为什么呢?
的IE(微软边缘25.10)数组这是直接从控制台:IE Date.toLocaleTimeString()拆分未被返回一个字符串
greg = new Date().toLocaleTimeString().split(':')[0];
"12"
greg = new Date().toLocaleTimeString().split(':')[0]=="12";
false
为什么呢?
这是因为有串两个不可见的字符:U-200E(左到右引号)在开头和结尾:
new Date().toLocaleTimeString().split(':')[0] == "\u200e12\u200e" // true
toLocaleTimeString
由ECMA-402定义here浏览器是否支持ECMA-402 ;否则,这完全取决于实施。 IE不支持ECMA-402,因此它可以将任何东西放入喜欢的字符串中。包括左到右标记似乎做一个奇怪的事情,但...
哇......谢谢。看起来我有一些阅读要做。我从来没有听说过这个你说的 – rikkitikkitumbo
T.J:任何想法,为什么IE做到这一点? Chrome似乎没有... – Cerbrus
@Cerbrus:没有。 : - |坦率地说,这似乎是一件奇怪的事情。 –
奇怪的是,似乎有在那个时间字符串周围的数一些不可见的字符:
这可以回避/通过解析分裂部为整数解决:
var part = new Date(2016, 00, 01, 10, 55, 30) // Fri Jan 01 2016 10:55:30
.toLocaleTimeString().split(':')[0];
console.log(part);
console.log(part == "10");
console.log(parseInt(part) == 10);
什么版本的IE? –
12是我ENV中的小时,也可能当你执行第二个代码时变成“13”。 – Jesse