【问题标题】:Javascript datetime string to Date objectJavascript日期时间字符串到日期对象
【发布时间】:2012-10-08 19:57:28
【问题描述】:

我正在调试一个小应用程序,它具有一些只能在 Chrome 中运行的功能。问题在于您选择日期和时间的日期选择器,日期选择器将其连接到日期时间字符串中。

无论如何,字符串看起来像这样:2012-10-20 00:00

然而,现在使用它的 javascript 只接受字符串并用它初始化一个对象,如下所示:new Date('2012-10-20 00:00');

这会导致 Firefox、IE 以及除 Chrome 之外的所有浏览器中的日期无效。 我需要建议我如何最好地将这个日期字符串转换为 javascript 中的 Date 对象。我启用了 jQuery。

感谢您的睿智建议和更好的智慧。

【问题讨论】:

    标签: javascript date datetime time


    【解决方案1】:

    如果str = '2012-10-20 00:00'

    new Date(str.split(' ')[0].split('-').join(',') + ',' + str.split(' ')[1].
    split('-').join(','))
    

    应该做的伎俩

    【讨论】:

      【解决方案2】:

      这只是简化版:

       var newDate = new Date('2015-04-07 01:00:00'.split(' ')[0]);
      

      【讨论】:

        【解决方案3】:

        如果字符串格式始终如您所说,则拆分字符串并使用位,例如:

        var s = '2012-10-20 00:00';
        var bits = s.split(/\D/);
        var date = new Date(bits[0], --bits[1], bits[2], bits[3], bits[4]);
        

        【讨论】:

        • 难道不能在javascript中使用parse方法吗? var m = Date.parse('2012-10-10 00:00'); d = new Date(m); ?
        • 忽略我的评论,试了一下。感谢您的回答,漂亮的代码。
        • ES5 包含一个 date time string format 用于 Date.parse 但并非所有浏览器都支持它,ECMA-262 ed 3 中没有一个。更安全的是自己解析它。
        【解决方案4】:

        使用 parseExact 方法

        var date = new Date.parseExact(dateString, "yyyy-mm-dd hh-mm");
        

        【讨论】:

        • Parse 方法不起作用,因为它与日期字符串的格式相同。据我所知,parseExact 来自 Date.js。
        • 如果您只是将它用于这件事,则无需在重要应用程序上引入新框架。但是,是的,只要您从一开始就使用它或者如果您真的需要它,使用它并没有什么坏处。
        • 如果您要引用外部库,请确保包含引用,或至少包含一个注释您正在使用外部库。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-02
        • 1970-01-01
        • 1970-01-01
        • 2011-02-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多