【问题标题】:JavaScript date() Object returns NaN with getYear (and other)JavaScript date() 对象使用 getYear (和其他)返回 NaN
【发布时间】:2011-09-30 13:14:12
【问题描述】:

我目前在 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 变量包含 NaN。与 getDay() 或 getMonth() 相同。有什么问题?

ps:我从 SQLite 数据库中获取日期格式。而且我使用的是 Titanium Mobile,所以只涉及 javascript 和 SQLite

【问题讨论】:

    标签: javascript datetime date


    【解决方案1】:

    您依赖 Date constructor 解析不受支持的格式。直到最近,Date 构造函数才支持 no 标准字符串格式。从 ECMAScript5 开始,有一个(YYYY-MM-DDTHH:MM:SS,注意 T 而不是空格),但它仅被指定了不到两年,自然不适用于旧版浏览器。

    目前,你最好自己解析(你可以在this question and its answers找到代码),或者使用DateJSMomentJSdate-fns等来为你解析.

    【讨论】:

    • 如何在 JavaScript 或 SQLite 中做到这一点?
    • @Topener:请参阅this question and its answers 以获取执行此操作的 JavaScript 代码。但是,我再次鼓励您查看 DateJS 之类的库。
    【解决方案2】:

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

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

    【讨论】:

    • “Date 构造函数不会为您解析字符串。” 是的,它会; details。如果你向Date 构造函数传递一个字符串,它将按照与Date.parse 相同的规则对其进行解析。它们都没有被记录为解析该格式。
    猜你喜欢
    • 2010-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-03-12
    • 1970-01-01
    • 2011-08-11
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多