JavaScript日期时间字符串转换为Date对象

9
我正在调试一个小应用程序,其中某些功能仅在Chrome中运行。问题出在日期选择器上,您可以在其中选择日期和时间,然后日期选择器会将其连接为日期时间字符串。
无论如何,该字符串看起来像这样:2012-10-20 00:00
但是,现在使用该字符串的JavaScript只是将其作为参数初始化了一个对象,就像这样:new Date('2012-10-20 00:00'); 这导致Firefox、IE和可能所有浏览器中的无效日期。我需要建议,以便能够在JavaScript中将此日期字符串转换为Date对象。我已启用jQuery。
感谢您的智慧建议。
4个回答

19
如果字符串格式始终如您所述,那么请拆分字符串并使用其中的位,例如:

如果字符串格式始终如您所述,请拆分字符串并使用其中的位,例如:

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); - Ms01
忽略我的评论,我只是试了一下。感谢你的回答,代码写得很漂亮。 - Ms01
2
ES5 包含了 Date.parse日期时间字符串格式,但并非所有浏览器都支持它,在 ECMA-262 ed 3 中也没有这个功能。最好自己解析。 - RobG

6

这只是简化版:

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

1
如果str = '2012-10-20 00:00',则
new Date(str.split(' ')[0].split('-').join(',') + ',' + str.split(' ')[1].
split('-').join(','))

应该可以解决问题


-3
使用 parseExact 方法。
var date = new Date.parseExact(dateString, "yyyy-mm-dd hh-mm");

解析方法不起作用,因为日期字符串的格式相同。据我所知,parseExact是来自Date.js。 - Ms01
1
如果你只是为了这个单一的目的而使用它,那么在重要的应用程序上不需要引入一个新的框架。但是,如果你从一开始就使用它或者确实需要它,那么使用它也没有什么坏处。 - Ms01
4
如果您要引用外部库,请确保包含参考文献或至少一条说明“您正在使用外部库”的注释。 - Chris Cirefice
不,它不起作用。 - Hossein Safari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接