0

我正在尝试使用从数据库中获取的变量来创建日期对象。该字符串已经是正确的格式,已经用逗号分隔“yyyy,mm,dd,hh,mm,ss”。但是,尝试创建 Date 对象会返回 Invalid Date 错误。

var foo ='2012,03,09,12,00,00,00';
document.write(foo); //<-- obviously writes the string 2012,03,09,12,00,00,00 to the browser
var then=(new Date(foo));
document.write(then); //<-- returns Invalid Date

我有一个解决方案,如下所示:

var x = foo.split(/[,]/);
var then = new Date(x[0], x[1], x[2], x[3], x[4], x[5]);

想知道为什么在本质上它正在重新创建传递给它的相同字符串时需要这样做。

4

2 回答 2

2

这是因为您尝试转换为 Date 对象的字符串无效。Date 对象不仅接受任何格式作为字符串。如果不被识别,它将无法工作。

请参阅日期文档https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

这是有关支持格式的信息

https://www.rfc-editor.org/rfc/rfc2822#page-14

于 2012-05-01T16:48:12.137 回答
1

"yyyy,mm,dd,hh,mm,ss"不是日期字符串的“正确格式”。

JavaScriptDate对象只能解析特定的格式。检查 MDN 文档以Date获取有效dateString的 s。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

反正。您的第二个示例有效,因为您没有重新创建字符串,而是传递了 6 个不同的参数,而不是一个长参数。

您不能将逗号分隔的字符串传递给函数并期望它将其分解为参数,那样做是行不通的。

于 2012-05-01T16:47:58.027 回答