Chrome 无法将日期字符串转换为 YYYY/MM/DD PM hh:mm 格式的日期

Chrome cannot convert date string to date in format YYYY/MM/DD PM hh:mm

我认为 Chrome 是最灵活的浏览器,但它在以下情况下不起作用:

newrecorddate = "2015/10/20 PM 06:09"
var d = new Date(newrecorddate);
console.log("d="+d);

在IE11中,日期(d)返回成功。在 Chrome 中返回 "Invalid Date"。我该如何解决?

更新:

Dai的代码确实解决了问题所以标记为答案。这是我使用的代码:

var r = /(\d{4})\/(\d{1,2})\/(\d{1,2}) (PM|AM) (\d{2})\:(\d{2})/;
                if( newRecordDate.match( r ) ) {
                    var ymd = newRecordDate.split(" ")[0];
                    var tt = newRecordDate.split(" ")[1];
                    var tod = newRecordDate.split(" ")[2];
                    var d = new Date( ymd + " " + tod + " " + tt );
                }

                return d;

(免责声明:我曾参与过 Microsoft 的 JavaScript 引擎 Chakra)

ECMAScript 的规范没有列出 Date 的构造函数必须成功解析的格式,实际上大多数实现通常会成功读取几乎所有可用的 non-ambiguous 格式,无论您使用的是哪种格式, YYYY/MM/dd tt HH:mm 不是现实中看到的格式(tt 在中间而不是最后)。一个好的启发式实现可能能够猜测它,但它有助于不必猜测或依赖语言规范中不存在的任何功能支持。

您必须自己解析日期,重新格式化,然后将其传递给 Date 的构造函数,幸运的是正则表达式使这变得简单:

var r = /(\d{4})/(\d{2})/(\d{2}) (PM|AM) (\d{2})\:(\d{2})/;
if( r.match( newRecordDate ) ) {
    var ymd = newRecordDate.substr( 0, 10 ); // note substr instead of substring
    var tt  = newRecordDate.substr( 11, 2 );
    var tod = newRecordDate.substr( 14, 5 );

    var d = new Date( ymd + " " + tod + " " + tt );
}

应该可以。虽然未经测试。