2016-05-13 59 views
0

我有一個日期字符串13/05/2016 08:18,爲了得到從字符串的日期我使用
new Date(13/05/2016 08:18)功能,但由於功能瞭解13月它給出了一個錯誤不一天,我該怎麼做才能告訴JavaScript 13是一天,而不是一個月新的日期功能的JavaScript

+0

您可以更新您的代碼給我嗎? –

+0

在JS中處理日期可能非常麻煩。我強烈建議使用像moment.js這樣的東西,這爲我節省了很多時間。 (http://momentjs.com/) – Robert

+0

[JavaScript日期對象英國日期]的可能重複(http://stackoverflow.com/questions/3117262/javascript-date-objects-uk-dates) – thatOneGuy

回答

3

我能做些什麼,告訴的JavaScript 13日,而不是一個月

不要依賴於JS構造函數(採用字符串作爲參數)來解析的任何日期格式,爲你。你需要自己做

var dateStr = "13/05/2016 08:18"; 
var date = dateStr.split(/\s|\/|:/); 
var d = new Date(date[2], date[1], date[0], date[3], date[4]); 
+0

很棒!非常感謝:) –

0

Date()對象有幾個不同的構造函數,但並非所有的瀏覽器都支持它們。支持的版本(據我所知)包括IE8在內的所有主流瀏覽器都是'yyyy/mm/dd 00:00:00',所以爲了實例化一個有效的日期,以便在所有需要的瀏覽器上運行像new Date('2016/05/13 08:18:00')

+0

ECMAScript僅指定一個子集ISO 8601格式,甚至它們都不可靠。與gurvinder372的答案相比,手動解析字符串要好得多。 – RobG

0

有一些解決方法,但http://momentjs.com/是非常好的。它是處理日期時間的好幫手庫。

然後,你可以做這樣的事情:

var day = moment("12-25-1995", "MM-DD-YYYY"); 

var day = moment("25/12/1995", "DD/MM/YYYY"); 

然後在日期操作

day.add('days', 7) 

,並獲得本地JavaScript日期

day.toDate(); 
+0

同意,moment.js操縱日期真的很好。但是,只有當您需要以多種方式操作多個日期時,如果不需要,這是僅顯示日期的大插件。 –

+0

這應該是一個評論,而不是一個答案。 – RobG

0

它不是最好的方式,但你可以試試這招:

var dstring = '13/05/2016 08:18'; 
var nstr = dstring.split('/'); 
var datestring = nstr[1]+"-"+nstr[0]+"-"+nstr[2]; 
var d = new Date(datestring); 
console.log(d); 
+0

你是對的,這不是最好的方法。將字符串拆分爲它的部分後,應該調用Date構造函數作爲gurvinder372的答案。 ;-) – RobG