JavaScript Date对象不使用传递给它的字符串

时间:2012-05-01 16:41:24

标签: javascript validation

我正在尝试使用从数据库获取的变量来创建日期对象。字符串已经是正确的格式,已经用逗号分隔“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]);

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

2 个答案:

答案 0 :(得分:2)

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

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

以下是有关支持的格式的信息

http://tools.ietf.org/html/rfc2822#page-14

答案 1 :(得分:1)

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

JavaScript Date对象只能解析特定格式。检查有效Date的{​​{1}}的MDN文档。 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

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

你不能将逗号分隔的字符串传递给函数并期望它将其分解为参数,它不会那样工作。