如何将此字符串转换为javascript Date对象?

时间:2014-03-05 13:48:42

标签: javascript

我有一个特定格式的字符串,我试图将其转换为Date对象。我希望var dateObject = new Date(myString)足够但不会起作用。所以我尝试将字符串分解成更小的部分,这也不起作用。

var str = '2015-02-20 11:00'; 
var obj = new Date(str.substr(2, 4), str.substr(5, 7), str.substr(8, 10), str.substr(13, 15), str.substr(16, 18));
// Above code yields invalid date

JS-Fiddle Example

如何从字符串中制作日期对象?

4 个答案:

答案 0 :(得分:5)

你试过吗

var str = '2015-02-20 11:00';
var obj = new Date(str);

适合我 - > http://jsfiddle.net/j5kaC/1/

如果由于一些不起作用的奇怪原因,将其拆分并将其传递给相应位置的Date构造函数

var str = '2015-02-20 11:00';

var arr  = str.split(' ');
var time = arr.pop().split(':')
var arr2 = arr.shift().split('-');

var date = new Date(arr2[0], arr2[1]-1, arr2[2], time.shift(), time.pop(), 0, 0);

console.log(date);

FIDDLE

答案 1 :(得分:0)

将您的代码行更改为此

var str = '2015-02-20 11:00'; 
var obj = new Date(str.substr(0, 4), str.substr(5, 2), str.substr(8, 2), str.substr(11, 2), str.substr(14, 2));

它会起作用。

您使用ISO格式:YYYY-MM-DD或YYYY-MM-DDTHH:MM:SS

例如: 新日期('2011-04-11')

新日期('2011-04-11T11:51:00')

答案 2 :(得分:0)

因为你已经拥有与 Date 构造函数相同的顺序的单位,你可以这样做..

var str = '2015-02-20 11:00',
    args = str.split(/[ :-]/).map(Number);
args[1] = args[1] - 1; // fix months;

var d = new Date; // this and the next line are separated otherwise
Date.apply(d, args); // you end up with a String and not a Date
d; // Wed Mar 05 2014 14:13:47 GMT+0000 (GMT Standard Time)

IE11 的控制台中尝试模拟 IE9 也可以。

答案 3 :(得分:0)

您的格式非常接近标准格式,只需用T替换空格:

var date = new Date(str.split(' ').join('T'));

http://es5.github.io/#x15.9.1.15

刚检查过IE8。确实不起作用......