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

JavaScript Date object not working with string passed to it

本文关键字:字符串 Date 对象 不适用 适用于 JavaScript      更新时间:2023-09-26

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

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

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

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

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

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

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

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

无论如何,您的第二个示例有效,因为您没有重新创建字符串,与一个长参数相比,您传递了 6 个不同的参数。

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