IE11中的日期字符串无法正常运行“ in”运算符

时间:2018-08-20 18:05:53

标签: javascript date

因此,我遇到了被转换为字符串的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);

感谢您的输入!

1 个答案:

答案 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中无效。