Javascript toISOString在firefox中不起作用

Javascript toISOString在firefox中不起作用,javascript,datetime,iso,Javascript,Datetime,Iso,我正在创建一个新的日期字符串- new Date(03-13-2016 00:00).toISOString(); 这在IE和Chrome中运行良好,但在FireFox中不起作用 我试着稍微修改字符串,就像- new Date(03-13-2016T00:00:00Z).toISOString(); 然而,这也失败了。如何在所有浏览器中工作才能达到预期的结果 2016-03-13T00:00:00.000Z PS我知道我从一个字符串开始,然后尝试创建一个带有toISOString的字符串-

我正在创建一个新的日期字符串-

new Date(03-13-2016 00:00).toISOString();
这在IE和Chrome中运行良好,但在FireFox中不起作用

我试着稍微修改字符串,就像-

new Date(03-13-2016T00:00:00Z).toISOString();
然而,这也失败了。如何在所有浏览器中工作才能达到预期的结果

2016-03-13T00:00:00.000Z

PS我知道我从一个字符串开始,然后尝试创建一个带有toISOString的字符串-原因是这在一行中处理到UTC的时区偏移量,这是必需的。

当您将字符串传递给日期构造函数时,它会在内部调用Date.parse以尝试从中获取有效日期。这首先检查它是否是规范中的一个。如果不是,并且03-13-2016 00:00和03-13-2016T000:00:00Z都不是,则继续说:

如果字符串不符合该格式,函数可能会退回到任何特定于实现的启发式或特定于实现的日期格式。无法识别的字符串或格式字符串中包含非法元素值的日期将导致Date.parse返回NaN


在这种情况下,IE和Chrome似乎都有允许正确解析的代码,而Firefox没有。解决此问题的唯一方法是使用符合规范的字符串,或使用调用构造函数。

如果不介意引入库或需要更频繁地使用日期,请使用具有一些非常方便的日期和时间方法且跨浏览器兼容的方法

然后可以将您的字符串转换为ISO字符串,如:

moment('03-13-2016 00:00', 'MM-DD-YYYY HH:mm').format();

您首先传递的字符串是非标准的,因此浏览器可以随意解析它。FireFox似乎觉得它无法解析它。Yeh试图不引入任何其他内容,但看起来这是必要的,我会给你的解决方案一个痛击,确保我在测试后标记为正确谢谢你的输入。