因此,我遇到了被转换为字符串的Javascript日期对象与IE11中的in
运算符之间的奇怪交互。 .toLocaleString()
返回日期的字符串,在使用in
运算符检查键时不起作用,即使通过另一个文本完全相同的字符串也可以。
该交互在Chrome中正常工作,但在IE11中似乎失败。我在这里想念的是什么,有什么办法可以解决这个问题?
let days = {
Monday: {},
Tuesday: {},
Wednesday: {},
Thursday: {},
Friday: {},
Saturday: {},
Sunday: {}
};
// The example date should be a Monday
let currentDate = new Date('2018/8/20');
let currentDay = currentDate.toLocaleString('en-us', {
weekday: 'long'
});
console.log(currentDay);
console.log(typeof currentDay);
console.log(currentDay in days);
console.log('Monday' in days);
感谢您的输入!
答案 0 :(得分:0)
这基本上就是为什么您应该坚持使用ISO日期字符串(2018-01-01T00:00Z
)而不使用任意格式的原因。
或者,自己解析格式,并使用new Date()
构造函数的其他重载,如下所示:
const currentDate = new Date(2018, 7 /* months start at 0 */, 20 /* days do not */, 0, 0, 0)
日期解析不好,IE不好,在这种情况下有两个不好的地方。
不是in
错了。您的日期在IE中无效。