2014-03-05 126 views
0

我有一個特定格式的字符串,我試圖將其轉換爲Date對象。我希望var dateObject = new Date(myString)是足夠的,但它不會工作。所以我試圖將這些字符串分解成更小的部分,而這也不起作用。如何將此字符串轉換爲javascript日期對象?

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

我怎樣才能讓約會對象我的字符串?

回答

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

+0

不,我說這是行不通的。 「無效日期」 – Weblurk

+0

@Weblurk - 在哪個瀏覽器中? – adeneo

+0

@adaneo Firefox。但你的第二個例子幾乎可行。它得到的月份錯了1.所以,如果我寫2012-02-20它將其轉換爲2012年火星20日。 – Weblurk

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

例如: 新的Date( '2011-04-11')

新的日期(「2011-04-11T11:51:00」)

+0

我讀的地方,不與IE <9工作,因此我的做法。 – Weblurk

0

因爲你已經在同一順序的單位爲日期構造需要他們,你可以做這種方式..

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正常工作控制檯了。

0

你的格式非常接近標準之一,只是T更換空白:

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

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

剛纔檢查IE8。確實不起作用...

相關問題