在JavaScript中解析类似ISO8601的日期:新的Date()在浏览器中不起作用

时间:2013-11-05 19:50:02

标签: javascript date cross-browser

如何将来自数据库的日期字符串转换为新的Date()对象?

如果我执行以下操作:

var x = new Date('2013-11-05 11:01:46:0');
alert(x);

它适用于Chrome,但在Safari中,它会为我提供字符串“Invalid Date”。 Here's the fiddle.

1 个答案:

答案 0 :(得分:4)

new Date(string)接受的字符串格式取决于实现。但是,如果浏览器正确实现了ES5规范,则应接受a strict subset of legal ISO 8601 strings。基本上,您需要使用UTC而不是本地时间,在日期和时间之间放置一个“T”而不是空格,在整数和小数秒之间使用小数点而不是冒号,并在末尾添加“Z”整件事:

2013-11-05T11:01:46.000Z

也许您可以让您的数据库以该格式输出日期;否则,您应该查看第三方库,例如moment.js