JavaScript date()对象返回带有getYear(和其他)的NaN

时间:2011-09-30 13:14:13

标签: javascript datetime date

我目前在JavaScript中转换字符串dateTime对象时遇到了一些问题

我假设这是因为我的字符串无法在new Date()中正确使用,但我不确定是不是问题。

我的意见:“2011-09-29 14:58:12”

我的代码:

var date = "2011-09-29 14:58:12";
var added = new Date(date);
var year = added.getYear();

但是,我的year var包含NaN。与getDay()或getMonth()相同。有什么问题?

ps:我从SQLite数据库中获取日期格式。我正在使用Titanium Mobile,因此javascript和SQLite是唯一涉及的内容

2 个答案:

答案 0 :(得分:8)

您依赖Date constuctor解析不受支持的格式。直到最近,Date构造函数还支持 no 标准字符串格式。从ECMAScript5开始,有一个(YYYY-MM-DDTHH:MM:SS,请注意T而不是空格),但它仅在不到两年的时间内被指定,并且在旧版浏览器中自然不起作用。

目前,您最好的选择是自己解析(您可以在this question and its answers中找到代码),或使用类似DateJS的内容为您解析(并提供许多其他有用的功能)日期/时间的东西)。

答案 1 :(得分:-2)

Date构造函数不会为您解析字符串。您需要使用Date.parse来执行此操作。有趣的是,Date.parse实际上并没有返回Date。相反,它返回一个unix时间戳。然后,您可以将unix时间戳传递到Date构造函数中以获取您要查找的内容。

var d = new Date(Date.parse("2011-09-29 14:58:12"));